Unity3D隐藏启动logo

  • 专业版带启动logo去除的方法
  • 个人版带启动logo隐藏的方法
  • 与透明背景冲突问题

Unity默认开启logo显示,专业版的可以勾选去掉,但个人版的无法去掉勾选,当然也可以下载破解版的软件,省去了很多麻烦。本文以Android平台为例,其他平台也可参考此做法。

专业版带启动logo去除的方法

进入 BuildSettings -> 左下角的Player Settings -> Player -> 选择平台 -> Android-Settings for Android下有个Splash Screen去掉勾勾就行。个人版这个勾勾是无法去掉的,只有正版或者破解版的可以去掉。

个人版带启动logo隐藏的方法

这里说的是隐藏,也可以称为覆盖,并不是去掉。实际上的做法是在Android平台端的UnityPlayer界面上添加一个View来覆盖启动logo。Unity端通知Android端3D模型启动的状态,实际上就是Unity调用Android的方法来覆盖启动logo。
首先编写C#脚本,将脚本与模型绑定。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class AndroidCaller : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){OnStart();}void OnStart(){if(Application.platform != RuntimePlatform.Android) return;AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");jo.Call("onUnityObjectStart")}
}

android工程中需要定义一个onUnityObjectStart方法与C#脚本中定义一致。

    public void onUnityObjectStart() {Log.d(TAG, "onUnityObjectStart");runOnUiThread(new Runnable() {@Overridepublic void run() {mUnityPlayer.removeView(mIvMask);}});}

运行后的效果如下:

与透明背景冲突问题

如果Activity的主题设置为UnityThemeSelector.Translucent
UnityThemeSelector.Translucent主题设置了windowIsTranslucent属性为true。

    <item name="android:windowIsTranslucent">true</item>

UnityPlayer源码中,如果设置了windowIsTranslucent为true则会SurfaceView.setZOrderOnTop(true)将SurfaceView置于顶部最上层,从而导致其他的View无法覆盖SurfaceView。

        SurfaceView var1;(var1 = new SurfaceView(this.mContext)).setId(this.mContext.getResources().getIdentifier("unitySurfaceView", "id", this.mContext.getPackageName()));if (this.IsWindowTranslucent()) {var1.getHolder().setFormat(-3);var1.setZOrderOnTop(true);} else {var1.getHolder().setFormat(-1);}

因此设置透明背景时需要注意此问题,有什么解决方案呢?

解决方案如下

onCreate方法中UnityPlayer创建后,通过findViewById找到对应的SurfaceView,将SurfaceView.setZOrderOnTop()方法改为不会遮挡UI控件的SurfaceView.setZOrderMediaOverlay()方法。

        int resId = getResources().getIdentifier("unitySurfaceView", "id", getPackageName());SurfaceView surfaceView = findViewById(resId);if (surfaceView != null) {surfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);surfaceView.setZOrderMediaOverlay(true);}

当然也可以反编译修改unity-classes.jar的代码。

以上为Unity3D在Android中隐藏启动logo的方式以及与透明背景冲突的解决方案,创作不易,各位老铁点个赞。

Unity3D隐藏启动logo相关推荐

  1. Unity替换启动Logo动画

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

  2. 修改Ubuntu的启动logo

    修改Ubuntu的启动logo 原文链接: https://my.oschina.net/jmjoy/blog/380262 内容: Plymouth splash screen is the ini ...

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

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

  4. 用MFC制作程序启动logo

    完了,这次土鳖了,介绍个非常过时的东西,其实就是自己收藏一下,怕以后想用的时候自己忘了. 直接进入正题,首先用ps等工具做一个自己喜欢的程序启动的logo位图,我这里制作的logo大小为500*313 ...

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

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

  6. 制作.ppm格式Linux内核启动logo

    在做的产品中,采用默认的小企鹅做logo肯定是不行的,所以一定要替换个像样的企业logo图片! 以前做过Linux启动Logo,时间太久,给忘了,所以再从新研究下. 经过在网上的搜索,和实际验证,制作 ...

  7. 修改Linux内核的启动Logo和禁用启动光标

    Linux内核下使用的图片文件类型是pnm和PPm格式的,所以在开始介绍修改linux内核启动LOGO之前, 1,先需要介绍一下怎么样设计自己开始logo的ppm图片,首先选择一张png格式的图片 使 ...

  8. 修改内核的启动logo

    以下内容源于朱有鹏<物联网大讲堂>课程的学习,如有侵权,请告知删除. 见博客http://blog.csdn.net/ultraman_hs/article/details/5498816 ...

  9. 苹果笔记本有uefi启动吗_如何更换Windows 10的启动logo

    我们日复一日看着Windows 10单调的启动画面都快看吐了. 如何你是UEFI安装的Windows 10,有时画面更加惨不忍睹: 黑乎乎的背景下,一个厂商的logo孤零零的挂在上方,像是一轮残月:下 ...

  10. V853 替换开机启动LOGO

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

最新文章

  1. 90%的开发都不太考虑这个,但只要出问题直接公司完蛋!
  2. spring+cxf
  3. ubuntu下面的robo3t 使用笔记
  4. java ee cdi_Java EE CDI程序化依赖关系消歧示例–注入点检查
  5. onvif发送订阅规则
  6. 学习了时间和测试题目
  7. BootstrapTable入门Demo
  8. 一个农民父亲令人震撼的力量
  9. java parseint(12.0),Java中parseInt()和valueOf(),toString()的区别
  10. fatal error: cuda_runtime.h: No such file or directory
  11. leetcode string
  12. WINDOWS上OpenCV需要有MediaPlayer才能正确运行?
  13. rost反剽窃检测系统_剽窃上瘾了?该戒戒了
  14. uni-app自定义配置安卓模拟器 - MuMu模拟器
  15. 图扑软件 3D 组态编辑器,低代码零代码构建数字孪生工厂
  16. 编写LLVM Pass模块知识点梳理
  17. PAT甲级 1087 条条大路通罗马
  18. android11最新版本是多少,Android11正式发布 安卓11正式版系统发布更新时间
  19. 三、存储系统(三)主存储器
  20. 当你用STMS传输请求时,那些选项都是啥意思

热门文章

  1. ECharts快速上手 入门教学
  2. zabbix 利用脚本发邮件(mail)
  3. android 支付宝手势密码锁,Android仿支付宝手势密码解锁功能
  4. Wowza服务器系列(4):使用rtmp协议向wowza推流的wowoza配置方法
  5. smartsvn 忽略文件夹_SmartSVN设置忽略文件类型设置上传.a文件
  6. H3C 无线控制器关闭信号认证
  7. 如何区分网线是几类的_网线怎么区分是几类的
  8. 笑看风云|水花投资(20220109 Week1-3)
  9. 希捷移动硬盘打不开怎么办?
  10. js格式化日期时间工具类