有人能详细的讲解一下unity游戏中C#与lua交互会有那些弊端?
C#特点是严谨、安全、容易调试、容易读、原生面向对象也很强大,而且非常容易学。
要写的代码越多,C#的优势就越明显,调试不累、维护不累、更新不累。
问题是,互联网支持的是js,不支持c#。
而桌面端的大型游戏引擎,竞争激烈,极度追求性能,所以基本只支持C++,也不支持C#。
也就是说,除了unity3d,C#在游戏界根本吃不开。所以,虽然C#语言本身很优秀,但还不如学JS,起码在网页游戏引擎和ios游戏引擎上通用。
但其实用C#做世界一流的游戏完全没有任何问题,著名的游戏magicka(魔法对抗/魔能)就是C#写的。
可惜几个很牛的游戏引擎绝对不可能去支持C#,导致C#的地位永远都会很尴尬。
不过本人经历过类似js这些语言在调试、找bug和维护时的巨大痛苦,整个过程纯属浪费生命,因此对不严谨的脚本语言恨之入骨,所以还是选择C#
发射激光:
在StemVR中自带有SteamVR_LaserPointer的脚本,是用来控制激光。
UI互交:
使用UnityEvent的目的是,绑定事件可视化
当获取手柄的GrabGrip键,按下就执行互交
一种方法是将序列按单张顺序导入成关键帧序列数组,然后在用脚本根据时间逐帧加载贴图这种方法虽然繁琐,但控制灵活,交互性最强。
另一种方法将序列处理成一整张的分格大图,然后用UV值OFFSET来根据时间决定贴图的显示位置,从而实现改变的动画效果。
第二种贴图处理方式方式还可以直接用SHADER来直接加载实现贴图动画,操作简单,(粒子的动画效果也是采用这种方法),但复杂交互控制起来不是很直观方便。
简单方法是,鼠标经过是用OnMouseOver,按下时用OnMouseDown ,然后触发你需要的效果,具体写法自己搜索一下就行。
高级点的方法是用射线,生成一条从摄像机到鼠标位置点的射线,然后判断射线与场景碰撞的位置,然后根据不同的情况来触发效果。具体的用法搜索PhysicsRaycast 或者ColliderRaycast
unity3d人机交互不难。现代的游戏引擎如Unity3D等对这些底层理解要求都不高,因为要求程序员注重的是业务逻辑的展开,即侧重的是开发游戏时的业务代码而非底层的渲染物理等等。只要具备基本的3d知识。这些知识如果通过学习底层的DirectX或者OpenGL等可以获得更好的效果以及更透彻的理解,可是其学习线路比较长,如果不是做游戏引擎开发的大可以不必操心。
0条评论