Unity3d开发中遇到的问题记录
安装Unity
unity官方提供免费的community版本,功能健全,下载时还有Visual Studio,非常方便。
官方文档
Unity的官方文档非常权威!详尽!可靠!很多关于函数细节的疑惑都可直接查阅文档解决!
https://docs.unity3d.com/ScriptReference/index.html
实际遇到的问题
1.场景切换
有时候需要用SceneManager.LoadScene()切换场景(如开始界面和实际游戏界面),该函数使用的是场景编号。而场景编号需要在文件-Building and Setting中手动添加,添加后场景编号会自动显示在其右侧。
2.按钮绑定函数
将需要进行的操作写在public声明的函数中。按钮本身还需要把自己添加到自己的“鼠标单击()”事件中!然后选定自己选定的函数。
3.让Canvas动起来!
在检查器中,将Canvas画布的渲染模式改为屏幕空间-摄像机。就能很方便地让UI适应玩家屏幕了。但这可能导致UI被普通物体遮挡,虽然可以通过设定画布到摄像机距离来指定Canvas,但最好还是使用默认设置。
实际遇到的细节
1. 旋转物体指向某目标
综合尝试过后,最简单的方法是使用transform.LookAt()看向目标物体,但需注意,不同物体的高度(y轴值)可能不同,但通常我们旋转物体只是想要获得水平方向的转动(也即y值不变)。所以最好新构建一个三维向量,拥有目标物体的x和z值,但拥有自身的y值(也就是说,构建一个虚拟目标):new Vector3(target.transform.position.x, this.transform.position.y, target.transform.position.z)
2.寻找附近物体
这方法有人说性能很低,但实现起来相对简单,没有测试过大量目标的场景。
使用Physics.OverlapSphere()方法获取附近一定范围的碰撞器,可以使用一个collider的数组来获取结果。如果要获得最近物体,可对数组内物体距离进行排序。这有可能导致性能下降。但笔者暂未找到更好的方法。
持续更新