Unity替换启动Logo动画

这篇具有很好参考价值的文章主要介绍了Unity替换启动Logo动画。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近的项目中,由于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,创建一个新项目,如下图所示

Unity替换启动Logo动画

2. 编写交互脚本

Unity替换启动Logo动画

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");

        //获取到正在运行的Activity
        androidJavaObject = androidJavaClass.GetStatic<AndroidJavaObject>("currentActivity");

        //调用Android端写好的hideSplash函数
        androidJavaObject.Call("hideSplash");

    }

}

3. 修改打包配置

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

Unity替换启动Logo动画

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

Unity替换启动Logo动画

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

Unity替换启动Logo动画

4. 打包Unity项目

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

Unity替换启动Logo动画

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

Unity替换启动Logo动画

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

Android

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

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

Unity替换启动Logo动画

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

Unity替换启动Logo动画

2. 将Unity项目打包aar

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

Unity替换启动Logo动画

3. 新建一个Android项目

Unity替换启动Logo动画

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

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

Unity替换启动Logo动画

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

Unity替换启动Logo动画

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

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

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

Unity替换启动Logo动画

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;     //创建一个图片动画帧对象

    @Override
    protected 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() {
            @Override
            public void run() {
                try {
                    Thread.sleep(10L);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        mUnityPlayer.removeView(bg);
                        mUnityPlayer.removeView(animImg);
                        bg = null;
                        animImg = null;
                    }
                });
            }
        }).start();
    }

}

演示视频

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

替换Unity启动画面的Logo

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

要是有疑问大家可以加我微信详聊 yf1553653788文章来源地址https://www.toymoban.com/news/detail-405858.html

到了这里,关于Unity替换启动Logo动画的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity3D】Android 打包 ② ( Android 编译选项 | Android 工程设置 | 配置基本信息 | 配置不同分辨率图标 | 配置启动动画 | 其它设置 )

    在上一篇博客 【Unity3D】Android 打包 ① ( Android 编译选项 | 安装 Android Build Support 模块 ) 中 讲解了 Android 打包的最基本配置 , 安装 Android Build Support 模块 ; 本篇博客继续讲解后续工作 ; 在 Unity 编辑器中选择 \\\" 菜单栏 | File | Build Settings \\\" 选项 , 点击 Build Settings 对话框的左下角的

    2023年04月19日
    浏览(34)
  • unity个人版去logo

    github上一段代码,跳过Unity Logo启动屏: github链接: https://github.com/psygames/UnitySkipSplash/blob/main/SkipSplash.cs 翻了一下Unity API文档,Unity暴露了SplashScreen.Stop() 停止启动屏的API 只需要写个静态方法,使用[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)]即在在显示启动画面

    2024年01月23日
    浏览(29)
  • Linux启动黑屏卡住Logo登录界面无法进入系统的终极解决方式

    为了避坑,有针对性的解决相应的问题,对阵下药,同时以便后续回忆与参考,特此记录。 因为深度学习的需要,得适配CUDA和Pytorch-GPU,因此在安装Nvidia驱动-535的时候,ubuntu自带的gdm3图形界面与该驱动之间冲突了。 补充:我是单系统,之前的Windows被我移除了。 因此导致开

    2024年02月10日
    浏览(33)
  • Unity 发布WebGL、去Logo、网络端通信 、本地运行

    以下内容将和大家详细分享 Unity 在 WebGL平台的发布方法、 如何去除unity的Logo和加载界面、 WebGL与网络端通信 、以及 如何在本地运行html。 一、Unity在 WebGL平台的发布方法 1、如下图,选择webgl平台,没安装的点击下载安装。  安装后如图。  选择需要打包的场景,无特殊要求

    2024年02月06日
    浏览(34)
  • 记录ubuntu启动卡在logo界面有鼠标进不了桌面的经历,以及安装ubuntu踩的坑

    我之前安装过很多次ubuntu,不管是虚拟机(4-5次),还是双系统(3-4次),每次都是我自己搞崩的。就是我和之前一样开始安装搜狗输入法,之前没出过问题。然后就是这次安装完,我感觉和之前不一样,就是之前不知道为什么安装完会有pinyin,双拼,五笔,和搜狗有没有关系

    2024年02月08日
    浏览(41)
  • Unity的闪屏Logo去除、移除、隐藏,在安卓平台的VR一体机上

    先上最终方案链接,想自己学习的朋友可以直接去学,我的博客主要针对安卓VR一体机,但是人家原文是对各个平台的去除Logo都有描述: GitHub - kiraio-moe/remove-unity-splash-screen:一种完整但肮脏的免费删除Unity启动画面的方法 ( 好消息,我研究成功了,等有空闲了把成功的做法

    2024年02月06日
    浏览(32)
  • tomcat启动失败:org.apache.catalina.core.StandardContext.startInternal 由于之前的错误,Context[]启动失败

    问题描述: 提示代码问题如下: 出现这种情况: 原因分析: 提示:今天启动tomcat,发现启动不起来。找了半天错误,原来是maven导入依赖的包没有起作用。 解决方案: 提示:这个应该是idea的一个bug吧。不会在springmvc项目中找到项目的jar包,不过我们只要自己手动添加下就

    2024年02月04日
    浏览(35)
  • 记录由于未关闭加速器就关机而导致的再次启动后DNS配置错误

    先直接给出解决方案: cmd输入 netsh winsock reset 这段时间在同学的推荐下入坑了鹅鹅鸭(Goose Goose Duck),一款紧张刺激的狼人杀类型的游戏。如果想顺畅的进行游戏,则需要使用加速器。 不久问题出现了:在周六上午和周二上午两次在教学楼打开电脑都发现没有网络,第一次

    2024年02月11日
    浏览(32)
  • 由于StackOverflower错误,无法完成对web应用程序[/XX]的批注的扫描。tomcat启动报错

    解决办法: 在tomcat的conf/catalina.properties 文件中排除对上述jar包的扫描。 具体操作: 1.打开在conf/catalina.properties文件 2.在tomcat.util.scan.StandardJarScanFilter.jarsToSkip 末尾增加: bcpkix-*.jar,bcprov-*.jar,fr-*.jar tomcat启动慢,堆栈报错(大概率因为要扫描jar里的servlet3.0注解): 操作: 在

    2024年01月18日
    浏览(33)
  • 记一次线上mysql出错:由于docker自动拉取最新mysql镜像导致mysql容器无法启动

    我随便写写,你们随便看看 环境背景:在docker中部署mysql镜像,通过portainer管理docker容器 简单说下过程:docker里mysql的时区没有设置,导致相差8小时,通过增加TZ=Asiz/Shanghai环境变量,然后重启容器来生效。结果重启的时候始终无法启动起来,后来发现是自动升级了mysql镜像版

    2024年02月07日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包