Unity手游开发:踩坑杂记

  1. C#代码没提示的时候,一般是因为项目未生成解决方案(Assembly-CSharp.csproj),这时候点击Unity菜单:Edit/Preferences/External Tools,点击Regenerate project files。

  2. 如果C#代码还没提示,vscode控制台选中OUTPUT(输出),右侧筛选栏选中OmniSharp Log,如果日志中有提示.NET 版本太低导致OmniSharp无法运行,则需要下载最新.Net SDK,然后重启vscode。(下载 .NET 6.0 SDK (v6.0.302) - Windows x64 Installer

  3. 如果C#代码还没提示,OmniSharp日志输出提示.NETFramework,Version=v4.7.1 were not found 的解决方法: 下载4.7.1版本的.NET Framework开发人员工具包下载 .NET Framework 4.7.1 | 免费官方下载

  4. Unity把普通文件夹代码和Editor文件夹的代码分为两个工程Assembly-CSharp.csproj和Assembly-CSharp-Editor.csproj,如果Editor代码引用了普通文件夹的代码则编辑器会报错找不到相关代码,这时候需要打开Assembly-CSharp-Editor.cspro修改<ReferenceOutputAssembly>字段为true。

  5. UGUI点击事件,子节点未绑定点击事件(有射线检测,无button),收到点击时会往父节点传递,若父节点有点击事件,则响应它并不继续往上传递。所以要想拦截事件不向上传递就加Button组件。

  6. UGUI的Text设置Content Fitter组件的preferedsize之后,通过RectTranform的rect或者sizedelta获取的大小都是0,要用Text的preferredWidth才行。

  7. 不建议直接复制子状态机,可能子状态机保存着之前父状态机的引用,导致报错。复制的话注意查找移除之前的引用。

  8. tolua中使用tolua.setpeer对userdata进行属性扩展(我们项目中由BaseExtend.Create进行了封装),一个go在lua中setpeer之后就可以进行自定义的属性赋值,比如tolua.setpeer(go, BaseExtend);go.a = 1。有一点要注意,setpeer之后要对处理后的go进行lua引用,否则peer表会被lua的垃圾回收机制回收掉,导致扩展属性丢失。一般表现为在某界面待一段时间后(触发了了垃圾回收机制),然后报错属性不存在。

  9. 2020版本之前Unity在安卓端加载video会有报错:Failed to open file 'archive:/CAB-14b18b06cefe699b4e940ceb502b0591/CAB-14b18b06cefe699b4e940ceb502b0591.resource'. (No such file or directory)。即使AB包不进行压缩一样会如此,目前解决方案是:"用gameobject挂上videoplayer组件,然后指向这个clip,把obj做成prefab预设打包,这样安卓下加载预设是可以播放成功"。参考:UWA问答 | 游戏开发者互动问答社区 | 侑虎科技

  10. 打不开项目报错弹窗:unable to open database file。可以尝试c盘进行碎片整理和空间清理。

  11. 打不开项目,加载到一半突然进程消失,考虑拔掉手柄之类的usb。win10的unity突然打不开了,点完项目之后没反应【unity3d吧】_百度贴吧

  12. Unity的数据持久化(PlayerPrefs)是放在windows的注册表中的,路径为HKEY_CURRENT_USER/SOFTWARE/Unity/UnityEditor/xx,可手动修改或删除。

  13. 关于material和sharedMaterial:为了省内存Unity使用的材质默认为sharedMaterial即共享材质,修改会影响其他用该材质的物体。首次调用material的get方法会自动将物体材质复制一份给自身用可仅修改本身而不影响其他物体的材质属性,该内存仅会在Application.LoadLevel() 或者Resources.UnloadUnusedAssets()时被回收。参考:Mesh中 material 和 sharedMaterial 的区别及内部实现的推断_material sharedmaterial_魔小明的博客-CSDN博客。另外UGUI的Image没有sharedMaterial字段,但material默认使用的也是共享材质,要想单独修改材质参数,需要手动复制一份进行修改。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值