IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity 和 Jar,自定义Unity安卓启动页 -> 正文阅读

[游戏开发]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打开日志输出:

在这里插入图片描述

按住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下的文件不能以数字开头

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 16:26:28  更:2022-01-03 16:27:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:41:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码