- 升级Unity版本到Unity2021或者更加新的版本
- 低级版本,如Unity5.6/2017/2018打出的WebGL版本可以浏览器中运行,但不能在手机浏览器中运行
- 更加低级的版本如,Unity4.x/3.x 只能在安装了Unity Web Player插件的32位浏览器中运行,在H5大行其道的当下,该方式已经慢慢淡出主流
- 艰辛的升级过程, 升级项目有的部分可以自动完成,而另外一些部分需要手动
- Unity2018版本的项目升级起来是比较顺畅的
- Unity5.6/2017版本的项目会有以下几个问题
- 老版本粒子系统丢失
- 替换掉
GUIText, GUITexture, 删掉Camera上挂载的 GUILayout
WWW 修改为 UnityWebRequest
- Unity 4.x到Unity 5,这二者之间的物理模块,如
cloth,车体物理如WheelCollider 有个大的更新,这对于赛车类游戏来说,可能需要重新调试车体物理效果;或者干脆放弃
- 对于低版本的项目,建议切换到资源模式
Force Text,再逐步从低版本升级高版本。如 Unity4.x -> Unity5.6 -> Unity 2018 -> Unity 2021
- 从Unity5.6/2017直接升级到Unity2021,
AnimatorController所引用的动画可能会缺失,一个可选的方式是,先升级到Unity2018,然后再到 Unity2021
- 带有绑定
GUILayout组件的Camera场景需要重新保存下,否则打包会Error
GetComponent/AddComponent("SomeBehaviour") 修改为 GetComponent/AddComponent<SomeBehaviour>()
- C#中动态创建类型的代码在在
il2cpp中是无法工作的,解决办法是枚举类型并展开,或者根据方法名去字典里查找对应的Func
typeof(T).GetMethod("methodName")
Activator.CreateInstance(type)
DynamicMethod, ILGenerator
AppDomain.CurrentDomain.GetAssemblies()
- WebGL版本注意点
- 不要设置
Application.targetFrameRate
- 去掉
Application.Quit()
- 去掉 对
Screen.orientation的修改
- 注意对
Screen.width, Screen.height的调用,当浏览器窗口会发生变化时,任何依赖该值的计算都需要重新计算;这点与Android/iOS平台完全不一样
warning: 2 FS.syncfs operations in flight at once, probably just doing extra work,网络说读写文件会导致这个问题,建议使用PlayerPrefs,但是PlayerPrefs调用次数过多也会有该问题
- 在
Canvas中设置屏幕屏幕宽高比,否则某些UI元素位置会显示乱掉
UnityWebRequest 要么写在using()中,要么调用其dispose() 方法,否则会有内存泄漏的问题:A Native Collection has not been disposed, resulting in a memory leak.
版本更新与浏览器缓存内容:游戏资源更新需要添加版本号或者刷新CDN;游戏存档数据则需要做升级或者兼容性处理、或者自行清理缓存数据。总之,开发者更新游戏后不能要求玩家手动清理浏览器缓存!
Prefab 'xxx.prefab' has unexpected file IDs and is likely to be corrupt,把prefab拖到场景里,然后再拖出成另一个prefab试试
- 类空间为:
Boo、UnityScript的遗留代码要改正
- 加入垃圾回收机制
Resources.UnloadUnusedAssets()
GC.Collect()
- 注意以下代码:
DllImport
RuntimePlatform.Android
UnityEngine.Input.touchCount, Input.touches
Social
- 删掉以下内容相关的代码:
UnityEngine.Advertisements
AndroidJavaClass, AndroidJavaObject, AndroidJavaProxy,
Application.ExternalCall, Application.ExternalEval
APIUpdaterRuntimeServices, using Boo.Lang, using UnityScript.Lang
- 包体优化
- 把图片长宽设置为
4的倍数,开启Crunch压缩
- 减少图片尺寸,去掉
mipmap
- 设置Audio的
Compression Format为Vorbis,设置Quality值为 20~25
- 对.fbx文件设置
Mesh Compression
- 删掉项目里没有用到的代码和资源
- 删掉重复资源;注意,完全一样的两张图片,一张用于diffuse,另一张用于生成normal,虽然它们是相同的图片,但是它们表示的是不同的资源
- 删掉不用的package
posted @
2025-04-12 19:26
opencoder
阅读(
428)
评论()
收藏
举报