摘要:
unity3d中新增了自动寻路组件,试用一下非常简单,首先将场景烘焙好后。在运行时调用NavMesh的CalculatePath静态方法,传入起始点,和目标点,如果两点之间存在一条路径的话,则将返回的路径信息保存在NavMeshPath当中,NavMeshPath的corners属性就是一连串的连接点信息。需要注意的是第一个点是起始点。有了这些路径关键点信息,就可以控制自己的角色,逐个点的移动,最后到达目标位置。 阅读全文
摘要:
Unity采用的GUI模式是立即模式,这种模式同平时常见到的类似windows那种基于消息的模式有很大的区别。在GUI布局方面采用GUILayout类还是非常方便的。但是要注意OnGUI函数的执行周期会比Update更快,也就是说,一帧里面可能会调用多次,比如每次鼠标事件就会调用一次,因此在OnGUI函数里面要尽量减少运算。提高效率。Guilayout配合GUILayoutUtility.GetLastRect()获取布局的空间在屏幕上面的坐标的时候,要注意如果不是在Event.current.type不是repaint事件时,获取的矩形区域是(0,0,1,1),如果忽略了这点,将会给代码带来 阅读全文
摘要:
在用OnGUI函数绘制窗体时,鼠标在窗体或控件上面操作时,场景则不应该响应鼠标事件。网上一般用 GUIUtility.hotcontrol!=0来屏蔽,当hotControl不为0时说明有控件处于激活状态。查官方文档,当鼠标在GUI控件上面按下时,hotcontrol被设置为该控件的ID,当鼠标按键被弹起时,hotcontrol为设置为0,因为在场景里面只能配合鼠标按下事件,不能配合鼠标弹起,因为此时hotcontrol已经被引擎置为0了。 但是目前开发的界面上发现,偶尔在窗体上点击时,hotcontrol仍然为0,因此不能完全屏蔽掉GUI的操作。不知道有人知道什么原因么?现在只好做一个全局标 阅读全文
摘要:
使用Unity的MonoBehavior组件开启一段协同程序非常方便,但是应该注意如果这段程序需要运行一段较长时间,在运行期间,如果开启这段协同程序的组件被删除了,则这段程序就不在执行了,因此使用StartCoroutine要注意源组件的生命周期和协同程序的生命周期。 阅读全文