Unity3D隐藏启动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 update
    void 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() {
            @Override
            public 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的方式以及与透明背景冲突的解决方案,创作不易,各位老铁点个赞。

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: 在Unity3D中,隐藏logo可以通过以下步骤完成。 1. 打开Unity3D编辑器,并创建一个新的项目。 2. 在项目视图中,找到Assets文件夹,然后右键单击该文件夹并选择“创建”->“文件夹”来创建一个新的文件夹。将其命名为“Editor”。 3. 右键单击“Editor”文件夹,选择“创建”->“C#脚本”来创建一个新的C#脚本。将其命名为“LogoHider”。 4. 双击“LogoHider”脚本以在Unity3D编辑器中打开它,并在脚本中编写以下代码: ``` using UnityEditor; using UnityEngine; [InitializeOnLoad] public class LogoHider : Editor { static LogoHider() { EditorApplication.delayCall += HideLogo; } static void HideLogo() { EditorApplication.delayCall -= HideLogo; PlayerSettings.SplashScreen.showUnityLogo = false; PlayerSettings.SplashScreen.showProgressBar = false; Debug.Log("Unity logo hidden."); } } ``` 5. 保存并关闭“LogoHider”脚本。 6. 返回Unity3D编辑器,点击菜单栏的“File”->“Build Settings”来打开“Build Settings”窗口。 7. 在“Build Settings”窗口中,确认当前平台是你要发布的平台,并点击“Player Settings”来打开“Player Settings”面板。 8. 在“Player Settings”面板中,找到“Splash Image”部分,并取消勾选“Show Unity Splash Screen”选项。 9. 点击“Build”按钮来构建和发布你的项目,运行时将不会显示UnityLogo。 希望以上步骤能帮助你成功隐藏Unity3DLogo! ### 回答2: 在Unity3D隐藏Logo有两种方法,一种是通过在代码中修改,另一种是通过编辑器进行设置。 首先,如果要通过代码进行修改,可以在项目的启动脚本中进行设置。在脚本的Awake()函数中添加以下代码: ``` using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; public class HideLogo : MonoBehaviour { void Awake() { // 获取Unity启动画面对象 GameObject unitySplash = GameObject.Find("UnitySplashCanvas"); // 如果启动画面对象存在,则隐藏 if (unitySplash != null) { unitySplash.GetComponent<Canvas>().enabled = false; } } } ``` 这样在游戏启动时,Logo画面就会被隐藏。 另一种方法是通过编辑器进行设置。选择菜单栏中的"Edit",然后选择"Player Settings"打开项目的设置面板。在"Player Settings"中,展开"Resolution and Presentation"选项卡,找到"Show Unity Splash Screen"选项,将其取消勾选即可隐藏UnityLogo。 无论使用哪种方法,隐藏UnityLogo可以提高游戏的品牌展示,让游戏更加专属于开发者自己。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言并肃

感谢大哥支持!您的鼓励是我动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值