
Unity效果实现思路
迷牙
这个作者很懒,什么都没留下…
展开
-
Unity 摄像头画面投射模型
红框是摄像头范围,投射的贴图是随便找的。这个效果主要是想把摄像头的真实画面,投射到Unity中的虚拟模型上。因此必须保证模型的1:1 ,还有相机的角度、位置、fov等的一致。构思:这种效果肯定是需要深度的,因为有遮挡关系。摄像头的位置使用一个Camera,因为Camer可以实现对摄像头参数的模拟,下面部分称作次相机。需要贴图的范围,肯定在次相机的渲染范围里面。创建一个物体,物体的Mesh填充Camera的渲染范围,即边框和图中红框重合。Mesh在场景透明物体渲染后被渲染,使用..原创 2021-01-26 17:43:07 · 1508 阅读 · 4 评论 -
Unity 等高线数据 生成山体
Unity使用等高线数据生成山体等高线数据通过QGIS导出{ "type": "Feature", "properties": { "fid": 3042, "ID": 3041, "ELEV": 220.0 }, "geometry": { "type": "LineString", "coordinates": [ [ 116.14026623630302, 40.045426917886395 ], [ 116.140266236144541, 40.045426917569436 ],原创 2020-09-27 12:02:32 · 2096 阅读 · 2 评论 -
Unity 制作编辑器工具的注意点
Unity中制作Editor工具,采用的OnGUI的方式,因此比较麻烦,也有很多容易犯的错误。GUI、GUILayout、EditorGUI、EditorGUILayout这4个类是用来绘制界面的。GUI和EditorGUI是一组。EditorGUI是Unity封装过的,里面有很多可以直接调用的函数用来绘制特殊字段,例如Int,Object,Float等GUILayout和EditorGUILayout是一组。Unity封装了一个布局的功能。一、GUILayout和EditorGUILayo原创 2020-07-29 19:50:14 · 385 阅读 · 0 评论 -
Unity 制作蓝图工具 C#中的技巧
最近花了两周时间,终于完成一个很简单的蓝图工具。其中我觉得比较复杂的,就是数据转换和数据计算,因为蓝图中数据类型是没办法直接获取到的。计算的时候不可能罗列所有类型的相互计算,因为类型大多了。由于数据要序列化,所以要保存类中的字段是可在Unity可序列化的,例如:Type 和 MethodInfo 以及 object 就不行object不能序列化就导致反射函数的参数需要转换,带来很多麻烦一、定义保存数据的类 [Serializable] public class Serial原创 2020-07-28 16:49:21 · 2534 阅读 · 1 评论 -
Unity 优化场景的一些方法
在做一些项目的时候,可能美术模型不标准,加上只关心好看,不关心性能。因此到最后整个场景运行费劲。以下是我在做webgl工程时,积累的一些优化经验,尽量不影响效果。一、模型检查首先检查美术的模型,这里检查模型,不是检查顶点三角数量,因为这可能影响效果。主要检查贴图,材质。美术在搭建场景的时候,都习惯用standard shader。然后一些模型只是因为颜色不一样,就用了两个材质球,模型贴图完全没有合并。有的模型还有submesh,但是submesh材质球只是贴图不一样。解决方法:我自己写了一个原创 2020-06-24 17:22:35 · 1640 阅读 · 0 评论 -
Unity C#代码编译dll
在做Unity的SDK时候,因为部分代码不希望用户误修改导致错误,例如一些固定数据。因此可以将这部分代码编译为Dll,然后在Unity中调用。首先打开VS创建新项目选择.NetCore类库。.NetFrameWork也是可以的。首先添加自己需要的依赖项,这里主要看你的代码中,引用了unity那些类然后可以直接把Unity中写好的C#类复制过来。整体好后,确定代码没有报错了...原创 2020-04-08 13:10:38 · 895 阅读 · 0 评论 -
Unity 多机器的视频不卡帧同步
视频同步不同于图片帧同步,因为图片帧同步只要传递帧数,然后加载相应的图片就行。一、使用VideoPlayer做视频时间同步最开始想到的方法就是这样,因为时间是视频位置的控制。使用UDP测试之后发现,在给VideoPlayer设置播放时间的时候,会有卡顿的现象。估计是要解析这个时间的视频数据,所以就觉得可能是VideoPlayer解析能力不能,其实本来也不行。于是就用了EasyMovieTe...原创 2020-03-03 15:29:48 · 6417 阅读 · 20 评论 -
Unity 语音通话功能
一、录制语音Unity自带Api public RecognizeVoice() { string[] microPhoneName = Microphone.devices; if(microPhoneName.Length > 0) { _microphone = microPhoneName...原创 2020-02-25 15:30:03 · 6113 阅读 · 8 评论 -
Unity UDP局域网广播 组播 Android
Unity Android程序,想实现一个局域网会议程序。一个程序创建好房间后,需要让其他客户端知道,就需要不断往局域网发消息开始想使用广播,后来改成组播。这里说一下这两种方式吧一、广播广播会往局域网所有客户端发送一次消息。 _socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, Protocol...原创 2020-02-23 15:13:02 · 2912 阅读 · 0 评论 -
Unity 协程实现
Unity 的协程是通过IEnumerator实现的。类似于切分成很多代码块,通过moveNext判断哪个代码块应该执行。 public interface IEnumerator { object Current { get; } bool MoveNext(); void Reset(); }MoveNext返回bool就是用来判断是否可以执行接下...原创 2020-01-16 15:57:24 · 375 阅读 · 0 评论 -
Unity 修改粒子参数
Unity新版本的粒子代码框架更改过,之前的很多api是不能用的。新版本的粒子效果把整个数据分成了几大模块,每个模块是一个struct public struct MainModule { public float duration { get; set; } public float startRot...原创 2019-12-27 11:01:37 · 3859 阅读 · 0 评论 -
Unity 通过物体上的3个点坐标变化,计算物体变化
这个理论本来应该用矩阵计算,但是不会,所以用了笨方法。假设上一帧三个点是:point1’ , point2‘ , point3’ 当前帧三个点是:point1 , point2,point3 物体上个点是:objpoint1 , objpoint2,objpoint3point1’ , point2‘ , point3’ 可以形成一个面point1 , poi...原创 2019-12-20 11:41:09 · 805 阅读 · 2 评论 -
Unity Android 显示导航栏和状态栏
Unity显示导航栏比较麻烦,显示状态栏挺简单的,网上百度有很多方案。主要实现方案是Github上的一个工程https://github.com/Over17/UnityShowAndroidStatusBar这个工程有aar包,也可以直接使用,但是我比较反感就是修改xml启动Activity的方案的,所以想直接在Unity用反射实现。他的安卓工程可以看看,只有三个函数。 pub...原创 2019-12-11 18:02:48 · 2178 阅读 · 0 评论 -
AudioClip 和 byte[] 相互转换原理
AudioClip 是Unity的中使用的音频类byte[] 是加载wav音频文件获取到的数据AudioClip可以通过GetData和SetData获取和设置音频数据,但是数据是-1到1之间的float数组因此byte[] 在转到AudioClip时需要将数据缩放成-1到1之前的floatbyte[] 的两个字节 对应 Unity中一个float数据 public byte...原创 2019-12-04 10:24:35 · 4037 阅读 · 7 评论 -
Unity Editor Scene窗口 射线检测
一、Editor状态下获取键盘鼠标输入Editor代码中不能使用Input获取,需要使用Event Event e = Event.current;if(e.keyCode == KeyCode.Space){}二、Editor脚本中获取鼠标位置 Event e = Event.current; Vector2 pos = e.mousePosit...原创 2019-11-27 17:14:57 · 2120 阅读 · 0 评论 -
Unity 使用真实地形数据 建立Terrain
http://www.gscloud.cn/地理空间数据云可以免费获取高程图使用在线计算,可以计算固定区域的高程图,然后会导出多张tif文件修改tif文件需要软件GlobalMapper 提取码:s3j7使用GlobalMapper打开文件选择等高线渲染方式,取消选择光照渲染然后导出成jpg设置8bit的灰度然后打开ps ,设置画布成2的整数倍导...原创 2019-11-12 11:13:10 · 2575 阅读 · 0 评论 -
Unity 使用LitJson 解析Json数据
Unity自带JsonUtility类,解析感觉不是很好用,数组解析不出来。fastJson 自己定义json数据结构的时候是好用,但是对于解析网络下载json感觉不是很好用。于是就用了LitJson,记得应该是我第一次解析json用的插件,但是很久没用,忘记怎么用了,于是记一下吧。 RecData data = new RecData(); ...原创 2019-10-30 15:05:04 · 2743 阅读 · 0 评论 -
Unity 接入百度物体识别 API
一、 新建应用,获取id和密码,为后面获取Access Token做准备二、 调用api需要授权的Access Token,Access Token或在固定时间改变,因此最好在程序启动的时候获取一次。三、 获取Access Token IEnumerator RequestTOKEN() { WWWForm form = new ...原创 2019-10-30 11:29:10 · 985 阅读 · 0 评论 -
Unity 绘制人物屏幕线框(根据动画变化)
思路:在人物的每一个骨骼上面,添加一个Box,然后每一帧遍历Box,计算出box的8个顶点,然后转换为屏幕坐标。比较所有屏幕坐标,找出最大和最小的x,y。然后就可以根据屏幕坐标绘制gl线框了。public static float[] MathSreenPoint(Transform[] cube , Camera _camera) { List<Vecto...原创 2019-08-15 15:56:33 · 789 阅读 · 0 评论