1 / 12
文档名称:

用Unity3D的17个技巧:Unity3D最佳实践.docx

格式:docx   页数:12页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

用Unity3D的17个技巧:Unity3D最佳实践.docx

上传人:yzhlyb 2016/7/4 文件大小:0 KB

下载得到文件列表

用Unity3D的17个技巧:Unity3D最佳实践.docx

文档介绍

文档介绍:用 Unity3D 的 17 个技巧: Unity3D 最佳实践扩展和 MonoBehaviourBase 21 、扩展一个自己的 Mono Behaviour 基类,然后自己的所有组件都从它派生这可以使你方便的实现一些通用函数,例如类型安全的 Invoke ,或者是一些更复杂的调用(例如 random 等等)。 22 、为 Invoke, StartCoroutine and Instantiate 定义安全调用方法定义一个委托任务( delegate Task ),用它来定义需要调用的方法,而不要使用字符串属性方法名称,例如: 资源来自于狗刨网 public void Invoke(Task task, float time) { Invoke(, time); } 23 、为共享接口的组件扩展有些时候把获得组件、查找对象实现在一个组件的接口中会很方便。下面这种实现方案使用了 typeof ,而不是泛型版本的函数。泛型函数无法在接口上工作,而 typeof 可以。下面这种方法把泛型方法整洁的包装起来。//Defined in mon base class for all mono behaviours public I ponent<I>() where I: class { return ponent(typeof(I)) as I; } public static List<I> FindObjectsOfInterface<I>() where I: class { MonoBehaviour[] monoBehaviours = FindObjectsOfType<MonoBehaviour>(); List<I> list = new List<I>(); foreach(MonoBehaviour behaviour in monoBehaviours) {ponent = (typeof(I)) as I; ponent != null) { ); }} return list; } 24 、使用扩展来让代码书写更便捷例如: public static class CSTransform { public static void SetX(this Transform transform, float x) { Vector3 newPosition = new Vector3(x, , ); = newPosition; } ...} 25 、使用防御性的 ponent() 有些时候强制性组件依赖(通过 ponent )会让人蛋疼。例如,很难在 Inspector 中修改组件(即使他们有同样的基类)。下面是一种替代方案,当一个必要的组件没有找到时,输出一条错误信息。 public static T ponent<T>(this GameObject obj) where T: MonoBehaviour {ponent = <T>(); ponent == null) { ("Expected to ponent of type "+ typeof(T) +" but found none", obj); } ponent; } 风格 26 、避免对同一件事使用不同的处理风格在很多情况下,某件事并不只有一个惯用手法。在这种情况下,在项目中明确选择其中的一个来使用。下面是原因: ?一些做法并不能很好的一起协作。使用一个,能强制统一设计方向,并明确指出不是其他做法所指的方向; ?团队成员使用统一的风格,可能方便大家互相的理解。他使得整体结构和代码都更容易理解。这也可以减少错误; 几组风格的例子: ?协程与状态机( Coroutines vs. state machines ); ?嵌套的 Prefab 、互相链接的 Prefab 、超级 Prefab ( Nested prefabs vs. linked prefabs vs. God prefabs ); ?数据分离的策略; ?在 2D 游戏的使用 Sprite 的方法; ? Prefab 的结构; ?对象生成策略; ?定位对象的方法:使用类型、名称、层、引用关系; ?对象分组的方法:使用类型、名称、层、引用数组; ?找到一组对象,还是让它们自己来注册; ?控制执行次序(使用 Unity 的执行次序设置,还是使用 Awake/Start/Update/LateUpdate ,还是使用纯手动的方法,或者是次序无关

最近更新

2025年教师期末教学总结 37页

“鲁迅研究”之文献计量法的应用 3页

2025年教学工作计划范文汇总八篇 28页

饲料中非蛋白氮 40页

“80后”知识型员工薪酬满意度与工作绩效的关.. 3页

ZnOAg纳米光催化剂的不同制备方法、N掺杂工艺.. 3页

WEB文章个性化推荐系统设计与实现综述报告 3页

餐饮企业培训项目设计 18页

p53在白藜芦醇诱导人结肠癌HCT-116细胞自噬和.. 3页

NiC复合材料的制备及电化学性能的研究 3页

LTCF用NiCuZn铁氧体材料及其片式电感性能研究.. 3页

Keystone概念图在中学生物教学中的应用 3页

2025年开会通知汇总9篇 6页

HPFL加固受火RC梁二次受力抗弯力学性能研究 3页

Foxp3基因慢病毒表达载体构建 3页

CT取电测控装置的设计与实现综述报告 3页

2025年一级建造师之一建建设工程经济考试题库.. 194页

2025年一级建造师之一建建设工程经济考试题库.. 195页

2025年一级建造师之一建建设工程项目管理考试.. 189页

2025年一级注册建筑师之建筑结构考试题库【综.. 136页

2025年一级建造师之一建建设工程经济考试题库.. 195页

2025年一级注册建筑师之建筑结构考试题库附答.. 136页

小学五年级阅读考级测试题 7页

劳模和工匠人才创新工作室联盟 章程 4页

管道无损检测合同模板 5页

防火施工合同 4页

(完整版)故障录波运行管理规定 14页

湖州市区物业服务收费管理实施办法 26页

石家庄市居民基本医疗保险大学生异地住院 2页

2021年史姓姓氏源流和迁徙分布 1 3页