原工程:5.5.2
用2018LTS版可以正常升级,升级后基本没有编译错误,但需要做以下操作。
如果包内有音频资源,可能会卡死
用2020LTS版升级到一半会提示是否进入安全模式,无视即可。打开工程后会有很多编译错误,大多是旧语法被抛弃了。
我碰到的主要有以下两个-错误1-
Assets\Standard Assets\Utility\ForcedReset.cs(6,27): error CS0619: 'GUITexture’ is obsolete: 'GUITexture has been removed. Use UI.Image instead.’
-错误2-
Assets\Standard Assets\Utility\SimpleActivatorMenu.cs(10,16): error CS0619: 'GUIText’ is obsolete: 'GUIText has been removed. Use UI.Text instead.’这两个看错误内容就知道了需要用新的类替换原来的。
「GUITexture」的部分替换成「Image」即可。如果提示Image找不到,添加「using UnityEngine.UI;」引用。
另一个「GUIText」替换成「Text」,同样属于「UnityEngine.UI」命名空间。
另外,从「GUITexture」换成「Image」之后,还碰到原来给「GUITexture」的实例设置属性「texture」的地方,比如
oGuiTexture.texture = someTexture;
换成Image的实例后,没有直接的texture可以被赋值。
需要改成
oGuiTexture.material.mainTexture = someTexture;
注:实例名改不改无所谓,为了方便不改也行。另外在编译打包apk的时候中途出现错误
Error building Player: CommandInvokationFailure: Unable to convert classes into dex format. See the Console for details.
继续看错误下方一大堆异常,里面出现了这种东西
stderr[
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoIcsImpl;
..这表示一个叫android.support.v4的包被重复引用了(你的错误可能是由别的包引起的,自己看)。
在Assets里面搜索重复的包名关键字很容易就找到两处引用,分别是两个不同的外部插件,这种情况很容易发生。随便删掉一个留下一个就解决了。