原工程: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里面搜索重复的包名关键字很容易就找到两处引用,分别是两个不同的外部插件,这种情况很容易发生。随便删掉一个留下一个就解决了。

Last modification:April 9, 2021
If you think my article is useful to you, please feel free to appreciate