蠢操作
1. config.ini用作配置文件在某些机器上乱码
通过某路径加载图片视频的项目(路径字段初始化赋值问题)
在此项目中犯的第一个错误是用了一个config.ini 做配置文件导致打包出来的项目在别的电脑上运行时,读取配置文件的内容错误(应该是乱码); 唉,最好还是用xml或者json
2. 第二个错误是一开始声明私有字段,后来需要调用就公开了,关键是私有的时候赋值了
声明了一个路径私有的路径字段,并在声明时赋值了(严重错误操作)
,此行为导致我在其它地方想要调用时(这个脚本是单例),公开了该字段,导致打包出来后初始路径都是原先的赋值路径,就一直报错,瞎忙活一晚上找原因,下次别的地方调用记得用属性。
3. 编辑器本身的Bug
有时候编辑器莫名其妙的错误,没有运行也一直报错,但是运行也不受影响,那就可能是unity编辑器的bug,有时候改变下布局,比如default、2by3、4split等,改完再改回自己的布局,亦或是重启unity。还有就是加载新场景时在编辑器里材质变黑,打包出来就没事。
4. 内存里的对象和场景里的对象的问题
不了解反射原理,在修改别人代码时,因为AB包资源打包时,预制体的相机camera的targetTexture赋了值,导致真机运行时一直报一个错Assertion failed on expression: ‘m_PreventLoadingFromFile != nameSpaceID’,
大概原因就是:创建一个有摄像头的预制件,在编辑器中创建一个渲染纹理,并将渲染纹理设置到相机上。将预制件构建成assetbundle。当你卸载assetbundle.卸载(true)时,你会得到错误msg:“mpreventloadingfromfile!=nameSpaceID。”
一个简单的解决办法是:新建一个类,在代码里为相机的targetTexture动态赋值;
但当前是同事用了反射,这个预制体在项目分支里有其他人使用,就想着用他源码改了其他人就不用改,然后直接赋值,赋值的对象是内存里的,并不是场景里的,所以debug的时候都能debug出来,但是场景里的就是没赋值成功,究其原因就是找错了赋值对象。
5.执行顺序很重要
不光是MonoBehavior的生命周期顺序,还有脚本之间的执行顺序,可能在调用另一个脚本的时候,脚本的内容还没有初始化,start还没有执行等等。
6.Game窗口Display分辨率的问题
有时候需要记录鼠标位置,通常分辨率是1920*1080的高清分辨率,但是切换为4K后,比如想在鼠标经过物体上方时让物体变色,可能位置不对变不了色。
7.使用TouchScript中的一个坑
正常在unity编辑器中能够正常使用touchscript的功能,
打包出来后发现UI界面死活触发不了。
最终是发现TouchManager的组件StandardInput下的
这里点击witchtoadvance后的
WindowsAPI要改成unity。