unity学习笔记-unity(2019)实现与as相互跳转

23 篇文章 0 订阅

Unity(2019)嵌入安卓开发-实现相互跳转

思路

先将unity打包成as能识别的文件格式,里面需要包含从unity跳转到安卓原生界面的方法。然后在as中导入unity打包好的模块,添加一些配置信息,添加从原生安卓界面跳转到unity的方法,最后打包apk测试即可

流程

先在unity中添加跳转到安卓的方法

	AndroidJavaObject jo;
    public Button btn;
    private void Awake()
    {
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        btn.onClick.AddListener(CallAndroid);
    }
    public void CallAndroid()//这个是从unity跳转到原生app界面的方法,这里用到的个人的理解是反射的原理,通过在unity获得java的反射从而调用他的方法(纯粹个人猜测)
    {
        jo.Call("ShowToast");
        Debug.Log("点击按钮");
        System.Console.WriteLine("点击按钮");
    }

注意在这里插入图片描述
这两坨是不能改的(看大佬的帖子是这么说的,还没试过修改)
然后在场景中添加一个button的ui,把脚本挂载到场景中的某个物体,然后把button挂载到脚本上即可
然后打包在这里插入图片描述
2019是这么操作的,由于项目升级,2018的打包方式和2019是不一样的,18的话点击gradle打包方式就可以了

AS配置unity的信息

这里可以看下面这两个大佬的帖子,写的很详细,跟着做就行了

https://blog.csdn.net/weixin_43271060/article/details/109547834
https://blog.csdn.net/qq_45888298/article/details/104209044?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control

这里我主要以第二个帖子为主进行的配置在这里插入图片描述
在as里找到setting.gradle配置文件,然后添加

include ':unityLibrary'
project(':unityLibrary').projectDir=new File('F:\\test\\unityLibrary')

这两行代码,意思是让as去找对应路径下的unity打包好的项目
然后在这里插入图片描述
在app模块的build.gradle里添加

implementation project(':unityLibrary')
    implementation fileTree(dir: project(':unityLibrary').getProjectDir().toString() + ('\\libs'), include: ['*.jar'])

这两行代码,这里我的大概理解是把里面的jar add as library的方法
然后还需要
在这里插入图片描述

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

这行代码,这里我感觉和前面的用处差不多,不过没有仔细研究
然后sync一下,如果找不到的话,可以在这里插入图片描述
右上角的红框,点击是一样的效果
然后就能看到unitylibrary导入在我们的as 里了
然后打开unitylibrary的androidmanifest.xml文件,吧把红框里的注释掉
不然apk在生成的时候会出现两个apk。一个是原生的,一个是unity的在这里插入图片描述
到这里as 的配置也差不多了,接下来就是添加互相跳转的方法即可

2021.5.27更新一下

后期如果unity项目有更新的话,可以在unity打包成export后把里面的内容复制粘贴到上面as识别unitylibrary的目录里去,然后sync一下,再在unity的library里的androidmanifest.xml里注视掉inflter那个标签即可(不注视的话打包后会在真机里出现两个apk(因为包名不同导致)),用这个方法就快捷一点,不用每次都重新新建as项目然后重复这些操作

as添加跳转至unity的方法

在app的MainActivity类里添加下面的代码

在这里插入图片描述
这里的意思是给原生app界面里的button添加监听事件,当点击的时候则跳转到unity的activity里
在这里插入图片描述
上面是在as里简单添加button的流程(本人对as的使用不熟练,用的都是比较简单的~)
记住这里button 的id,我们上面跳转到unity的方法里需要用到这个button的id来找到这个button

as添加unity跳转到app的方法

在这里插入图片描述
在app模块的路径下,创建一个新的activity类,然后继承unityplayerActivity这个父类
添加下面的代码

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_unity);
    }
    public void ShowToast(){
        Intent intent = new Intent(this,MainActivity.class);
        this.startActivity(intent);
    }

需要引用的alt+enter让程序自动添加引用即可
到这里就可以进行打包调试了

调试的方法

pc上

在这里插入图片描述
在这里插入图片描述
然后ok即可

手机上

打开开发者选项(没有的在关于手机里点多几次版本号就有了)
打开usb调试,注意,这里我的手机是neo5,点击管理文件的话as是识别不了的,我是点击传输照片才行的
然后点击在这里插入图片描述
这个播放键,手机就会自动安装我们写好的程序
这里需要注意,打包好后,如果有的大佬和我一样出现了string 在这里插入图片描述
类似这种问题的话,需要在在这里插入图片描述
路径下添加这个代码

<string name="game_view_content_description">Game view</string>

小的也不是很懂这个代码的含义,但能解决string出现的问题
然后测试运行即可,到这里小弟的跳转功能就实现了,就是从app跳转到unity上的时间会有点长

历经将近半年的时间,终于把这个难关打通了~其实之前已经基本实现了,就是卡在string这个bug上,一直不知道怎么解决,就搁置了,之前使用的是2018的版本,所以2018的跳转按照流程来走的话应该是没问题的,只要在string.xml文件里添加上面的代码就能解决
解决了就一个字,爽!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
加油,不能骄傲~
后期项目就要开始负责了,成长系统任务系统装备系统等等等等,还有资源热更新的问题,让一个半路出家的人来承受确实顶,希望能坚持住吧,加油~

同天晚上更新
有些细节没有处理
1,app跳转到unity的时候虽然能正常运行,但时间太长
2,当从unity跳转到app的时候,回来都是重新打开的状态,体验极差
这两个目前感觉只能从as上下手,但是本人对as的研究太浅,网上对这些的处理有的行不通, 有的是看不懂,这些问题只能等大佬或者以后自己研究研究解答了

隔天更新一下~
有关两个项目的包名是否需要一致的问题,这里我测试的时候用的不是一致的包名,也能够正常运行,所以应该是不用一致的~
不过这可能只适用于2019版本及以上,以下的话就不清楚了~

2022.12.8更新
问题,为了应用上传手机厂商应用市场,需要打包32位64位兼容包才能过审,但是unity2019如果使用mono模式打包的话是无法兼容64位的,在嵌入到安卓后会提示硬件不支持,所以在unity项目打包的时候需要把脚本的编译改成il2cpp的模式,并且勾选上下方红框勾上的armv7和arm64,一定要勾上,这里说一下我的问题,测试中为了加快速度于是我在中途改回了mono模式去打包apk,然后内嵌到安卓项目的时候再用回il2cpp,但是你在unity设置中选回il2cpp的时候,下面的arm64会恢复到默认的不勾选的状态,切记,选择了il2cpp后一定要看一下下面的两个arm是不是都有勾选上,没有的话在内嵌到安卓的时候在真机运行时很多机型就会提示硬件不支持的问题
再提一下,内嵌的安卓项目里最好把原来的unity的安卓工程的lib和src删掉,不然的话打包出来会有比实际大很多,不知道是缓存的问题还是什么
在这里插入图片描述

### 回答1: unity-debugging-2019.x.zip是一个开发工具,是用于unity游戏引擎的调试和测试工具包。Unity是一个流行的游戏开发平台,提供了各种开发工具和功能,但有时开发者需要调试和测试游戏以确保游戏的稳定性和质量。所以,Unity向开发者提供了这个调试工具包。该工具包包含许多用于调试和测试Unity应用程序的工具,例如Profiler和Frame Debugger,这些工具可帮助开发者分析和优化游戏性能和资源使用。此外,Unity还提供了一些有用的调试信息,如断言、堆栈跟踪和异常信息等,可帮助开发者发现和解决游戏中的错误和问题。总之,unity-debugging-2019.x.zip是一个方便和必要的工具包,可以帮助Unity开发者有效地进行游戏开发和调试。 ### 回答2: unity-debugging-2019.x.zip是Unity官方提供的一个调试工具包,其中包含了Unity的调试器、Profiler、内存分析工具等等,可以帮助开发者在开发过程中快速定位和解决问题。此工具包适用于Unity 2019版本及其以上。 通过调试器,开发者可以单步执行代码、查看变量值,从而帮助分析和定位错误。而Profiler则可以帮助开发者检测性能问题,例如卡顿、CPU使用率、GPU使用率等等。内存分析工具则可以帮助开发者理解和优化内存使用,找出内存泄漏等问题。 使用unity-debugging-2019.x.zip调试工具包,开发者可以更加高效地进行调试和优化工作,提高开发效率和代码质量。此工具包非常重要,特别是在大型项目开发中,可以大幅提高开发效率和项目稳定性。同时,该工具包免费提供,非常实用且方便。 ### 回答3: unity-debugging-2019.x.zip是一个Unity游戏引擎的调试工具包,可帮助开发人员识别游戏中的错误和调试问题。该工具包包含Unity引擎的调试版本,可用于查看和调试游戏代码中的错误、警告和异常。同时,该工具包还包括几种调试技术,如远程调试和调试器扩展,这些技术使开发人员能够更快地发现和修复游戏中的问题。使用unity-debugging-2019.x.zip可以大大提高开发人员的调试效率,缩短开发周期,提高游戏质量。无论是初学者还是资深开发人员,使用该工具包都能有效地提高游戏开发水平和效率。虽然该工具包是专业开发人员使用的工具,但对于想要深入学习游戏开发、了解游戏引擎内部运行机制的人来说,也是一个重要的工具。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淳杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值