unity 踩坑纪实(记录自己的蠢操作)

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下的Switch这里是个大坑
这里点击witchtoadvance后的
API需要改成unity
WindowsAPI要改成unity。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ThousandsOfSongs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值