zoukankan      html  css  js  c++  java
  • Unity3D开发七惑

    使用Unity3D开发也有大半年了,心中存惑如下,愿与各位开发者一起探讨:

    (1)  远离普适编程之惑

    随着游戏引擎的不断发展,游戏程序员的开发层级也越来越高,以unity3d尤为突出。如果是进行Web模式的开发,那需要关心的方面更少了,距离传统3D游戏开发中的windows普适性编程知识也越来越远。

    (2) 托管之惑

    Unity3D使用托管语言进行开发,一般使用C#,这样很多开发者都远离了内存管理这样的底层功夫,虽然使用托管语言一样要注意内存使用的效率,但GC这样的“大保姆”让不少人都懈怠不少。

    (3) 隐藏之惑

    Unity3D为了提高应用开发层次,包装隐藏了诸多细节。使用MonoDevelop进行Debug的时候,你无法看到从传统的main函数到断点的CallStack。不知道哪里调用了Awake,Start和Update。

    (4) 脚本之惑

    GameObject是容器,脚本往里放。由于只要写一个继承自MonoBehavior的Component脚本,就可以访问挂接对象的所有属性,乃至访问整个场景的GameObjects,传统游戏开发中模块的访问禁地仿佛都不存在了,层次很容易发生混乱。有时候斟酌,到底一个功能是放到一个普通的非脚本类,还是放到脚本类;一个GameObject是否应该只挂接一个脚本,而其他功能为非脚本类,由此脚本进行非脚本类的Start和Update。

    (5) 乱序之惑

    由于不同脚本的Awake和Start执行是无序的,所以脚本A的Start如果依赖了脚本B的Start,则会随机出现问题,awake如果存在依赖也是一样。虽然Unity中有设置脚本执行顺序的地方,但还是不方便使用,特别是依赖关系复杂的情况。

    (6) 职业发展之惑

    Unity3D的上手难度相对来说已经很低了,这和Unity3D的设计理念是紧紧相扣的,它本来就是想让个人开发者能轻松开发出游戏,即使开发者是一个美术或者策划,经过短期的学习,都可以设计开发出耐玩的小游戏。Unity3D初衷并非是大型游戏开发,虽然它以后可能是。一个使用传统3D引擎,有着两三年经验开发者(比如Gamebryo),和一个新人一起接触学习Unity3D,一年之后,两者的差距起码在Unity3D的开发知识上,不会有较多差距。当然,这也和开发层级高,使用托管语言和脚本组件的开发机制有关系。

    (7) 大型游戏开发之惑

    灵活的脚本机制容易滥用,非二进制的文件不用进行版本Merge。在国内的网络条件下,webPlayer模式的Unity3D大型游戏还是在资源尺寸上扼住了不少开发者的喉咙。而作为Standalone模式开发的话,相对于传统非托管的开发引擎开发的大型游戏,在运行效率上还是有所欠缺的。这个效率体现在托管中间语言到二进制的转换,以及内存的灵活管理上。

  • 相关阅读:
    sql 作业创建
    sqlserver的触发器练习实例
    js按钮频繁提交解决方案:
    C# 使用WebClient下载文件到本地目录
    放松读物,再看css禅意花园-总结HTML-又收到两个标记
    放松读物,再看css禅意花园-总结HTML
    放松读物,再看css禅意花园-HTML是CSS设计的基础
    线段的垂直平分线12
    放松读物,再看css禅意花园-第一章学到的教训-文本的可缩放
    放松读物,再看css禅意花园-第一章继续学到的教训
  • 原文地址:https://www.cnblogs.com/suway/p/7384425.html
Copyright © 2011-2022 走看看