前言

最近的项目中,由于Android中集成了Unity场景,每次进入打包好的Unity项目时都会出现Unity的标志性动画,让用户处于等待状态,体验感比较差;于是便在产品经理的要求下将Unity的启动Logo换成公司的宣传动画

目前的解决办法有两种:

  1. 充值Unity加强版,便可以在打包时一键跳过Unity启动动画;
  2. 将Unity的启动动画替换为自己公司的宣传动画

今天给大家分享一下第二种解决方案,我是将Unity与Android的交互先写好,然后再把Unity打包成Android项目嵌入到主Android项目中

演示视频

替换Unity启动画面的Logo

环境

Unity3D:准备一个Unity空场景即可,让其通知Android端替换Logo

AndroidStudio:替换启动动画的逻辑便写在此处

Unity端

1. 准备Unity项目

打开Unity,创建一个新项目,如下图所示

2. 编写交互脚本

StartPage.cs:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class StartPage : MonoBehaviour
{private AndroidJavaClass androidJavaClass;private AndroidJavaObject androidJavaObject;private void Awake(){//当Unity的场景创建出来的时候,便通知Android端将接下来Unity启动的动画替换掉GetAndroid();}public void GetAndroid(){if (Application.platform != RuntimePlatform.Android)   //判断是否运行在Android设备中{return;}androidJavaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");//获取到正在运行的ActivityandroidJavaObject = androidJavaClass.GetStatic<AndroidJavaObject>("currentActivity");//调用Android端写好的hideSplash函数androidJavaObject.Call("hideSplash");}}

3. 修改打包配置

点击File——>Build Settings,然后便出现如下弹窗

点击Edit——>Project Settings——>Player——>Android,如下图所示

修改打包的参数设置,如下图所示:

4. 打包Unity项目

将我们的Unity项目打包成Android项目

打包成功后,项目文件夹大致如下,大家可以参考一下

到此为止,Unity这边的操作便已经结束了,接下来的跳过启动页面就交给Android端去做了

Android

1. 打开Unity项目并修改配置

用Android Studio打开刚刚打包出来的Unity项目,如下图

修改AndroidManifest.xml文件,将启动配置注释掉

2. 将Unity项目打包aar

将Unity项目打包成 aar,操作如下图,Android中的aar对应Unity中的Package包

3. 新建一个Android项目

4. 引入Unity的aar包并加上一个字符串资源

把我们的aar放入到相应文件夹下,并添加引用

因为我们的UnityPlayer类中有用到名为"game_view_content_description"的一串字符串,所以我们需要在string资源下添加一下,这个地方是Unity的一个坑点

5. 编写替换Unity启动动画的逻辑代码

这里为了图方便,就带大家直接在我们新建项目中的MainActivity中编写即可,不需要创建其他任何的类和布局文件

如下图所示,代码也给大家放后面了,可以直接复制粘贴使用,只需要修改一下照片即可,这里小编为了图方便,直接放置了一张图片,大家可以放置多张照片形成动画,其实就相当于MainActivity承载了Unity场景

MainActivity.java

package com.example.androidtest;import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.ImageView;import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;public class MainActivity extends UnityPlayerActivity {private ImageView bg;                    //Unity启动画面的背景图片private ImageView animImg;               //Unity启动画面的动画图面private AnimationDrawable frameAnim;     //创建一个图片动画帧对象@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);animImg = new ImageView(UnityPlayer.currentActivity);frameAnim = new AnimationDrawable();//我这里只添加了一张图片,大家可以添加多张图片来制作动画frameAnim.addFrame(getResources().getDrawable(R.drawable.yf),300);   frameAnim.setOneShot(false);animImg.setBackground(frameAnim);frameAnim.start();animImg.setScaleType(ImageView.ScaleType.CENTER_INSIDE);DisplayMetrics displayMetrics = getResources().getDisplayMetrics();mUnityPlayer.addView(animImg,displayMetrics.widthPixels,displayMetrics.heightPixels);UnityPlayer.UnitySendMessage("Main Camera","GetA","");}public void hideSplash(){new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(10L);} catch (InterruptedException e) {e.printStackTrace();}runOnUiThread(new Runnable() {@Overridepublic void run() {mUnityPlayer.removeView(bg);mUnityPlayer.removeView(animImg);bg = null;animImg = null;}});}}).start();}}

演示视频

到此为此,我们就做完了,给大家看一下演示效果

替换Unity启动画面的Logo

注意:记得跑真机上才可以运行测试,因为我之前在Unity打包Android项目时,忘记勾选 x86和x86-64选项了,这两个是模拟器,勾选了才能跑在Android Studio的模拟器上

Unity替换启动Logo动画相关推荐

  1. [Unity实战]仅需25行代码 安卓/ios打包跳过Unity启动Logo动画...[新手开箱可用][全平台支持]

    [Unity实战]仅需25行代码 安卓/ios打包跳过Unity启动Logo动画 参考文章 接上一篇文章-unity隐私协议包通过审查 1.直接上代码: 2.打包后使用效果展示: 3.源码地址: 参考 ...

  2. Unity实战篇 | 教你怎样将Unity的启动Logo 设置成 自己制作的 帧动画

  3. V853 替换开机启动LOGO

    概述 主要描述了 V853 如何替换开机启动LOGO 环境 软件:V853 Tina 5.0 SDK 硬件:全志V853开发板 具体步骤 首先我们看一下未替换的启动log界面如下: 需要准备一张大小合 ...

  4. Unity发布Android APK去掉Unity启动Logo教程

    Unity发布Android APK去掉Unity启动Logo教程 我们要解决的问题: 黑屏时间问题和启动Logo问题,之所以黑屏是因为Activity启动后mUnityPlayer 中的内容还没有准 ...

  5. android 程序 读logo,制作Android启动Logo

    一.去除Embedded Linux 的开机光标: 在内核的当前目录进入到drivers/video/console/fbcon.c文件 将static void fb_flashcursor(voi ...

  6. android210的启动logo的修改

    //-------------------------------------------------------------------------------------------- // 作者 ...

  7. android开机自启动应用日志标志,制作Android启动Logo

    http://blog.chinaunix.net/uid-26119896-id-4383872.html 一.去除Embedded Linux 的开机光标: 在内核的当前目录进入到drivers/ ...

  8. linux开机自动打开全屏,如何修改Linux开机启动logo并使其全屏显示?

    1.制作开机启动logo的图片(my_image.png  ==>  logo_linux_clut224.ppm),要求图片的分辨率要和屏幕大小一致. 使用如下命令: pngtopnm my_ ...

  9. 玩转mini2440开发板之【制作和修改linux启动logo图片】

    今天玩一玩linux启动logo图片的修改和制作. 对于我手头的mini2440开发板,其实厂家友善之臂原本是有配一个转换工具的,用起来会比较简单.但是,它那个工具仅针对32位的Fedora 9系统开 ...

最新文章

  1. 塔式、机架式、刀片式服务器比较
  2. Fabio 安装和简单使用
  3. Python Inotify 监视LINUX文件系统事件
  4. angular4更改表单中显示的值_Angular 4 动态表单教程 Reactive Forms教程
  5. CoderForces Round54 (A~E)
  6. 【SpringBoot MQ 系列】RabbitListener 消费基本使用姿势介绍
  7. 用 Python 将微信热文转换成Word文档 | 神级操作
  8. 在php中构造函数的作用,php构造函数的作用
  9. aws rds同步_将数据从Python同步到AWS RDS
  10. java 8的一些新用法
  11. JMM设计原理之双重检查Lock
  12. 即时通讯学习笔记005---在windows中安装OpenFire服务器即时通讯服务器_使用OpenFire内置数据库
  13. 父子进程共享内存通信的三种方法
  14. 概率论07 联合分布
  15. 在Excel中用VBA制作俄罗斯方块游戏
  16. stm32晶振匹配电容_晶振的匹配电容选择
  17. 让复杂Json数据和对象自由转换 --- Gson
  18. 关于 Sem Ver(semantic versioning)
  19. java-php-python--数字相册管理系统-点赞演示2021计算机毕业设计
  20. 骨传导耳机哪个牌子好?哪些款式最值得入手?

热门文章

  1. vim复制粘贴不错乱格式方法
  2. 营销人才必须具备狼性
  3. spring bean的懒加载原理
  4. 精彩回顾 | Fortinet Accelerate 2023·中国区巡展杭州站
  5. 神奇宝贝 眼前一亮的 Jetpack + MVVM 极简实战
  6. 店宝宝:威马汽车进驻拼多多 线上卖车是门好生意吗
  7. 计算机遇到错误无法安装windows,无法安装windows10 - Microsoft Community
  8. 包装类型是什么?基本类型和包装类型有什么区别?
  9. 1M都不到的极简动态壁纸软件,爱了爱了!
  10. html5如何设置静音,如何取消静音HTML5视频有一个静音道具