Unity 和 Jar,自定义Unity安卓启动页

打Jar包流程

1,新建一个AS的Java空项目
2,修改plugins为com.android.library,删掉多余的配置,再点击Sync Now,把这个工程变成类库
在这里插入图片描述

3,在java目录下新建所需要的Java类
在这里插入图片描述

4,打包
在这里插入图片描述

5,找到jar包
在这里插入图片描述

6,将这个jar包放入Unity工程下的Plugins/Android下即可

C#调用Java:

得到类:AndroidJavaClass class=new AndroidJavaClass(“包名.类名”);
得到对象:AndroidJavaObject obj =new AndroidJavaObject(“包名.类名”);

在这里插入图片描述

调用方法:obj.Call(“方法名”);
调用静态方法:class.CallStatic(“方法名”); obj.CallStatic(“方法名”);
得到字段:obj.Get(“字段名”);

Java调用C#

(1) 找到Unity安卓平台目录下的安卓jar包。
Unity安装目录下的:Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes
(2) 将这个jar包放入AS工程下的libs目录下
在这里插入图片描述

(3) 将这个jar包添加到库中
在这里插入图片描述
在这里插入图片描述

(4) 通过UnityPlayer这个类中的UnitySendMessage方法与C#调用,
这个方法三个string类型参数,
var1:游戏对象名称
var2:方法名
var3:参数

Unity安卓项目结构:

Unity打包安卓项目

在这里插入图片描述

用AS打开这个项目:File-Open
在这里插入图片描述

launcher:放置安卓的配置以及权限

AndroidManifests配置文件

在这里插入图片描述

unityLibrary:放置Unity主要内容

在这里插入图片描述

Java:代码
assets:游戏资源
AndroidManifest:
在这里插入图片描述

Activity(活动):

代表了一个具有用户界面的单一屏幕,具有一系列的周期函数
onCreate():第一次创建
onStart():用户可见调用
onResume():应用程序与用户可交互的时候调用
onPause():被暂停的活动无法接受用户输入,不能执行任何代码。当前活动暂停,上一个活动将被恢复时调用
onStop():不可见调用
onDestroy():销毁调用
onRestart():停止后重新打开调用

创建一个自定义的活动,

Unity的默认的UnityActivity可以在Unity的安装目录下的:Editor\Data\PlaybackEngines\AndroidPlayer\Source\com\unity3d\player下找到

  1. 创建一个自定义的活动类继承Activity,重写周期函数

  2. 在AndroidManifest增加一个Activity节点,将UntiyPlayerActivity节点的主活动移动到自定义活动下
    在这里插入图片描述

  3. 创建活动自定义布局
    在这里插入图片描述

创建后自定义GUI(Text,Button等),鼠标拖动放入,编辑详细信息
在这里插入图片描述

  1. 在onCreate中调用setContentView这个自定义布局
    setContentView(R.layout.testlayout);//通过id设置
  2. 布局上的GUI组件,通过调用findViewById(R.id.button)得到
    在这里插入图片描述

Button btn = findViewById(R.id.button);
给按钮加上事件:btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(TestActivity.this,UnityPlayerActivity.class);//跳转活动
startActivity(intent);//开始活动
}});

创建Activity动画

(1)帧动画

  1. 在res/drawable创建一个动画XML
  2. 新建根节点< animation-list android:oneshot=“false”>,oneshot:false代表一直重复播放
  3. 在animation-list节点下创建图片节点:drawable表示哪个图片,duration表示当前图片播放多久,毫秒计算
  4. 在layout中创建一个ImageView组件,将background设为新建的动画XML
  5. 在活动脚本的onCreate方法,先设置布局,在得到ImageView组件,在激活对应的动画
    setContentView(R.layout.test);//设置布局
    Img = findViewById(R.id.wrap);//通过id得到组件
    Img.setImageResource(R.drawable.animation);//给图片组件绑定动画
    AnimationDrawable animationDrawable = (AnimationDrawable) Img.getDrawable();//得到图片组件上的动画
    animationDrawable.start();//激活动画

(2)自定义UnityAPK启动页

(1) 新建AS项目(注意包名要和Unity的包名相同)导入class.jar和UnityPlayerActivity脚本,在Unity安装目录下
(2) 在新建一个Java类继承UnityPlayerActivity
(3) 重写onCreate方法
(4) 创建ImageView这样的GUI组件:
ImageView iv = new ImageView(this);
(5) 增加动画以及给组件绑定动画以及激活动画,方式和帧动画方式差不多(帧动画的图片大小不能太大,不然会报GC的错误)
(6) 添加到unity的活动中
mUnityPlayer.addView(iv);
(7) 增加隐藏方法调用隐藏启动页:
iv.setVisibility(View.GONE);
//GONE隐藏,GONE 不显示且不占用布局,VISIBLE显示,INVISIBLE:不显示
(8) 修改AndroidManifest.xm,增加activity节点以及intent-filter节点设置主activity为自定义的activity,
在这里插入图片描述

(9) 生成的主jar包,以及AndroidManifest.xml,以及res下用到的资源也放入Unity工程下(Assets/Plugins/Android下)。(注意,这个jar包里有UnityPlayerActivity和BuildConfig脚本,会与unityLibrary里的重复,可以通过改后缀的方式用360压缩解压在删除在压缩在改后缀删除)
(10) 在Unity的Awake方法中调用这个隐藏方法

动态请求权限

Unity中可以通过UnityEngine.Android.Permission.RequestUserPermission方法获取用户同意的一些权限,比如相机之类的
在这里插入图片描述

另外一些权限直接在AndroidManifest文件中添加uses-permission节点
在这里插入图片描述

AndroidStudio中的一些小功能

(1) 显示消息面板:Toast.makeText(Context text,String str).show();
Context:Activity是继承Context的,如果实在Activity中的话,直接this
str:消息内容
(2)

AS小技巧:

关闭启动AS自动打开项目

在这里插入图片描述

AS打开日志输出:

在这里插入图片描述
只看Unity的Log:
在这里插入图片描述
在Tag里面填入Unity即可

按住Ctrl键的同时单击鼠标查看源码

显示代码行数:

在这里插入图片描述

修改文件编码为UTF-8

在这里插入图片描述

多行注释取消注释快捷键:

Ctrl+/

注意事项

(1) ,警告AGPBI导致的问题
是包重复引用导致的原因,仔细检查Java类中的引用包
(2) 报错Attribute application@label value=…AndroidManifest
是因为Library也定义了与主项目相同的属性,会导致合并失败,比如都默认生成的android:label=“@string/app_name” 或者 android:icon=“@drawable/icon_logo”,在application中加入tools:replace="android:icon, android:theme , android:label"标签解决或者选择删除哪个属性
(3) res下的文件不能以数字和大写字母开头

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值