Unity3d中的常见问题和解决方 1、制作特效时,使用animation记录的位置是相对位置,如果直接放到别的节点下会出问题; 解决方法:在特效根节点的上一层加上一个transform是(0,0,0) (0,0,0)(1,1,1)的父节点,之后再使用和处理父节点 2、使用NGUI制作界面时,ui特效会有位置对不上的问题(美术不会用ngui,使用原始的模型+材质贴图的形式来做特效) 解决方法:让美术将特效直接做到ui上面 3、美术制作的特效导出时丢失材质和贴图 解决方案:要求美术在建模时不准挂材质,所有的材质不使用自动生成的,而是在unity里面新建、挂接,程序也可以提供删掉默认材质的编辑器扩展插件 (assetImporter as ModelImporter).importMaterials = false; 4、多人间合作时的文件共享和版本控制 解决方案:1》Edit->Project Settings->Editor 打开 meta files 2》meta文件和原始文件一起同步 3》checkout时 按住 左边的alt键或option键 5、文本化场景文件 解决方案:edit----project setting ----editr 将Asset Serialization 的 mode 设置成Force Text 6、ngui的界面元素无法响应 解决方案:制作ui时注意设置摄像机的eventReceiverMask的层为对应的层 7、摄像机看不到ui 解决方案:将ui的层设置为摄像机对应的渲染的层 8、脚本中start和update等函数不能继承 解决方案:将这几个函数内的逻辑抽象成函数,之后子类中继承这些函数 9、脚本调用时因为空引用而崩溃 解决方案:所有初始化工作写在start中,所有功能写到update中,如果仅执行一次,可以加个bool型的开关 10、等待某个特效播完 解决方案:可以使用coroutine来等待 11、跨平台动态加载贴图、音频 解决方案:使用www 12、周期性的活动,如每4拍换一个舞步 解决方案:当前时间/周期 减去整数部分,与0.5比较 13、换装重新组织SkinnedMeshRenderer的sharedMesh时骨骼对不上 解决方案:所有avatar的部件的骨架设置要一模一样 14、减少动作文件的大小 解决方案:游戏开始时动态的将animation加到mesh上面 15、全局功能需要多处调用 解决方案:将全局功能直接挂到程序节点ProgramRoot上,使用时直接 GameObject.Find("ProgramRoot").GetComponentInChildren 16、GameObject.Find找不到隐藏的节点 解决方案:定义public GameObject 属性,之后在编辑器里面拖拽 17、各个界面间数据的共享 解决方案:创建单独的GameWorld等数据模型模块,并统一实现序列化和反序列化 18、分时的状态逻辑 解决方案:coroutine加配置表 19、灵活的object的属性 解决方案:Dictionary<string, string> propsTable; 20、灵活的事件响应回调 解决方案:统一继承BaseCallBack,里面写具体的逻辑 21、渲染暂停时实现动态效果 解决方案:Time.timeScale = 0f; 程序通过 Time.realtimeSinceStartup来手动实现特效效果 22、炫酷的显示得分 解决方案:每一位数字用一张数字的贴图来实现 23、ui特效阻碍ui的响应 解决方案:调整z值,使特效在ui的后面 24、特殊的运动轨迹和手感 解决方案:用animation编辑器做成动画来播放