Flutter中集成Unity踩坑之旅

7/22/2022 FlutterUnityAndroid

# 劝退词

先反思一下你们为什么要用flutter去集成unity?可不可以不用fluter去集成?如果可以的话,先放弃,用原生去集成吧,本文也不用看了,因为fluter集成实在太坑了,太降低效率了!步步坑机!如果非要用flutter去集成,或者想挑战下自己的忍耐力,那么请看下文。

# 集成流程

首先我们打开flutter项目,添加flutter-unity-view-weight (opens new window)依赖,我们直接在pubspec.yml中添加依赖:

dependencies:
  flutter_unity_widget: ^2022.1.1+4
1
2

如果你是flutter3.0以下,那么就添加:

dependencies:
  flutter_unity_widget: ^2022.1.0+7
1
2

然后我们打开Unity,点击Assets -> Import custom package,然后选择上面链接中的

Unity packages -> fuw-2022.1.1-v2.unitypackage (opens new window),我们只勾选插件部分,不需要导入demo,**如果有报错,请把unity升级2022.1.2版本。**然后我们的菜单栏就会多出一个flutter选项,我们可以直接选择flutter -> export Android 来导出unityLibrary,这个包默认是在Assets同级目录的,此时有可能报错,提示build.gradle路径不对,有两种解决方案。

  • 1 将android项目和unity项目放在同一个目录下。
  • 2 双击错误,打开对应C#脚本,然后将里面的androidProjectPath路径改为自己的android项目的路径。

然后我们用AndroidStudio打开我们的flutter项目,将导出的unityLibrary作为一个module添加到项目中,此时会报错,提示有两个unity.classes的jar包,我们将flutter-untiy-view-weight中的unity-classes删掉,同时将该module对应的build.gradle文件中implementation(name: 'unity-classes', ext:'jar')删除,让它只依赖我们的unityLibrary。修改后的build.gradle文件如下:

implementation project(':unityLibrary')
1

然后将unityLibrary中的implementation(name: 'unity-classes', ext:'jar')改为: api fileTree(include: ['*.jar'], dir: 'libs'),同时在我们的根目录的build.gradle文件中添加:

flatDir {
    dirs "${project(':unityLibrary').projectDir}/libs"
}
1
2
3

然后运行代码即可。

# 问题以及解决方案

# 1 出现两个unity-classes错误

此时我们只需要把flutter-unity-view-weight中的那个删除,只保留我们自己导出的unityLibrary 中的unity-classes即可。

# 2 出现xxx找不到的依赖错误

我们需要在项目根目录的build.gradle中添加:

flatDir {
    dirs "${project(':unityLibrary').projectDir}/libs"
}
1
2
3

然后将unityLibrary中的build.gradle中的

`implementation(name: 'unity-classes', ext:'jar')
1

改为:

api fileTree(include: ['*.jar'], dir: 'libs')
1

# 3 导入fuw-2022.1.1-v2.unitypackage报错

  • 1 导入时,只勾选插件,不要勾选demo和里面的其他资源。
  • 2 如果还报错,就升级unity到2022.1.1版本(也就是插件对应的版本)

# 4 export Android出错

  • 1 将android项目和unity项目放在同一个目录下,比如:

    package/android // android项目
    package/unity // unity项目
    
    1
    2
  • 2 双击错误,打开报错脚本,修改里面的androidProjectPath路径为自己android项目的路径,默认是../../android

# 5 提示NDK找不到

在local.properties文件中,配置ndk路径即可。

Last Updated: 7/29/2022, 10:22:37 AM