Unity3D的两个坑
来源:互联网 发布:佐治亚州知乎 编辑:程序博客网 时间:2024/05/21 16:57
Unity3d虽然做东西便利,也因此带来两个很大的坑。
其一是因为编辑器很容易关联不同的脚本,如果开发者经验不足,会让脚本之间依赖混乱,最后组织结构如同蜘蛛网,修改起来极其麻烦。 再微博上经常遇到一个问题,很多人吐槽, C#脚本和UnityScript脚本之间不能混用,基本上就是这个问题引起,因为如果保持单向依赖,接口放置再Plugins目录,实现放在SCR目录就不会有任何问题。
解决这个潜在问题的办法是开发者要在心里搞清楚依赖关系,让代码保持单向依赖才行,这个编辑器肯定帮不了开发者。
第二个坑更惨,我本人也陷入。
基于组件的开发模式,很容易惯纵开发者把渲染合逻辑代码混合到一起。因为每个组件都是场景中的一个位置和物体,很容易让开发者用空间关系来划分游戏结构,比如我们之前的游戏设计分为上面显示,中间UI下面操作三分的显示结构。基于直觉代码结构也是分为这三块。感觉很好,但在需求变化时候,比如要去处中间UI部分,我才发现问题的严重性,这样做等于显示和逻辑强耦合近来,泥马,我五一用了一个礼拜去重构(可以说使重写)代码,影响整个游戏70%代码都要重写,甚至到现在还有很大一部分等待重构。这个教训极其惨重,泥马,本质上代码还是要MVC啊,组件只是工具,Unity3d也是工具,工具不能影响本质,只能为本质服务,游戏的逻辑和渲染分离这么最基础的问题我都忘掉,检讨。我建立了一个空的组件书,不带任何渲染只处理逻辑关系。然后渲染放在另外一个渲染树上面去做才好。(用一个有限状态机去做控制部分)。
胜负的关键不是剑而是剑客本身。我个人认为,Unity3D的开发比Cocox2D要简单,但是简单并不代表更容易,但是因为Unity3D的简单,反而让开发者很多时候放弃思考,者带来的问题可能更加严重。保持一个谨慎的心,工具不停在变,但是软件开发的本质,还是那些。莫忘初心,方能始终!
其一是因为编辑器很容易关联不同的脚本,如果开发者经验不足,会让脚本之间依赖混乱,最后组织结构如同蜘蛛网,修改起来极其麻烦。 再微博上经常遇到一个问题,很多人吐槽, C#脚本和UnityScript脚本之间不能混用,基本上就是这个问题引起,因为如果保持单向依赖,接口放置再Plugins目录,实现放在SCR目录就不会有任何问题。
解决这个潜在问题的办法是开发者要在心里搞清楚依赖关系,让代码保持单向依赖才行,这个编辑器肯定帮不了开发者。
第二个坑更惨,我本人也陷入。
基于组件的开发模式,很容易惯纵开发者把渲染合逻辑代码混合到一起。因为每个组件都是场景中的一个位置和物体,很容易让开发者用空间关系来划分游戏结构,比如我们之前的游戏设计分为上面显示,中间UI下面操作三分的显示结构。基于直觉代码结构也是分为这三块。感觉很好,但在需求变化时候,比如要去处中间UI部分,我才发现问题的严重性,这样做等于显示和逻辑强耦合近来,泥马,我五一用了一个礼拜去重构(可以说使重写)代码,影响整个游戏70%代码都要重写,甚至到现在还有很大一部分等待重构。这个教训极其惨重,泥马,本质上代码还是要MVC啊,组件只是工具,Unity3d也是工具,工具不能影响本质,只能为本质服务,游戏的逻辑和渲染分离这么最基础的问题我都忘掉,检讨。我建立了一个空的组件书,不带任何渲染只处理逻辑关系。然后渲染放在另外一个渲染树上面去做才好。(用一个有限状态机去做控制部分)。
胜负的关键不是剑而是剑客本身。我个人认为,Unity3D的开发比Cocox2D要简单,但是简单并不代表更容易,但是因为Unity3D的简单,反而让开发者很多时候放弃思考,者带来的问题可能更加严重。保持一个谨慎的心,工具不停在变,但是软件开发的本质,还是那些。莫忘初心,方能始终!
0 0
- Unity3D的两个坑
- 打开两个unity3d工程
- 两个牛叉哄哄的Unity3d Shader编辑器
- <Unity3d学习笔记二>两个比较困惑的关键字解释
- 【Unity3d】介绍两个实用的UI按钮小工具
- unity3d c#用于两个坦克对打血条的增减
- Unity3D的一个坑
- Unity3D获取两个GameObject间距
- Unity3d碰撞ios的坑
- Unity3D适配安卓时的那些坑
- Unity3D隐藏的坑记录
- Unity3D之DontDestroyOnLoad的坑
- Unity3D 代理的使用及获取两个碰撞器的碰撞点
- Unity3D 和 Android 交互时遇到的常见的两个问题
- Unity3D研究院之与根据动态的两个轨迹点绘制面详解(二十)
- Unity3d 分别创建了两个线程客户端 服务器连接的简单示例
- Unity3D UI层 两个摄像头会出现两层UI的情况
- Unity3d 分别创建了两个线程客户端 服务器连接的简单示例
- 内存泄漏以及常见的解决方法
- dialog加载动画实例
- ListView的优化问题
- C#实现语音视频录制-附demo源码
- Hibernate 数据的批量插入、更新和删除
- Unity3D的两个坑
- virtualenv 隔离gjango开发环境
- web图表库百度开源:ECharts
- Ubuntu下使用Vi时方向键变乱码 退格键不能使用的解决方法
- codeforces #325
- 结构化程序设计和面向对象程序设计的特点及优缺点
- 数据结构基础3_带头结点的单链表
- 黑马程序员———I/O流
- POJ 1384 Piggy-Bank (完全背包)