Unnity IOS安卓启动黑屏加图(底图+Logo gif也行)

Ios篇

在Xcode中创建Storyboard文件,2019及之之前版本应该是XIB文件,创建方法

在Unity-IPione先创建一个文件夹命名为View 啥都行 然后把图篇资源拉进来

然后创建

Storyboard就是第二个 XIB就是第三个

需要创建两个 一个是手机 是个是pad

然后点击 右上角的+ 创建一个ImageView 拉到xib里面 右侧选择图 然后选择适配

左边箭头选择图 右边箭头适配

一般需要两个图 一个是底图 一个是logo

然后在Unity中选择创建的这两个文件

然后打包测试

ps:如果修改的话需要重新打包

安卓篇

在StreamingAssets放两张图

然后编辑MainActivity.java

java 复制代码
import android.graphics.Color;
// import android.graphics.Point;
import android.view.ViewGroup;
// import android.view.animation.AlphaAnimation;
// import android.view.animation.Animation;
import android.widget.ImageView;
import android.content.res.Resources;
import android.util.DisplayMetrics;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import java.io.InputStream;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.FrameLayout;
java 复制代码
        private  ImageView bgView = null;
         FrameLayout frameLayout = null ;

onCreate中调用showSplash

java 复制代码
  protected void onCreate(Bundle bundle) {
        Log.d("Unity", "MainActivity On Create");
        super.onCreate(bundle);
           showSplash();
java 复制代码
  public void showSplash() {
            try {
                  if (frameLayout == null){
                    hideSplash();
                }
                DisplayMetrics outMetrics = new DisplayMetrics();
                WindowManager wm = (WindowManager) mUnityPlayer.currentActivity.getSystemService(Context.WINDOW_SERVICE);
                wm.getDefaultDisplay().getRealMetrics(outMetrics);
             //   bgView = new ImageView(this);
                //--使用纯色背景---
                 //bgView.setBackgroundColor(Color.parseColor("#5633AB"));//--
                //--使用使用纯色背景 END---
                    //--使用png---
              // 创建 FrameLayout 作为容器
                   frameLayout = new FrameLayout(this);
           
                   // 设置底图(背景)
                   bgView = new ImageView(this);
                   InputStream is = mUnityPlayer.currentActivity.getAssets().open("loadBackground.jpg");
                   Bitmap bm = BitmapFactory.decodeStream(is);
                   bgView.setImageBitmap(bm);
                   bgView.setScaleType(ImageView.ScaleType.FIT_XY);
           
                   // 将底图的宽高设置为屏幕宽高
                   FrameLayout.LayoutParams bgParams = new FrameLayout.LayoutParams(outMetrics.widthPixels, outMetrics.heightPixels);
                   frameLayout.addView(bgView, bgParams);
           
                   // 设置 logo 图片
                   ImageView logoView = new ImageView(this);
                   InputStream logoStream = mUnityPlayer.currentActivity.getAssets().open("logo.png");
                   Bitmap logoBitmap = BitmapFactory.decodeStream(logoStream);
                   logoView.setImageBitmap(logoBitmap);
                   logoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
           
                   // 设置 logo 的布局参数(居中且向上偏移 461 像素)
                   FrameLayout.LayoutParams logoParams = new FrameLayout.LayoutParams(
                           FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT
                   );
                   logoParams.gravity = android.view.Gravity.CENTER;
                   logoParams.topMargin = -461; // 向上偏移 461 像素
                   frameLayout.addView(logoView, logoParams);
           
                   // 将 FrameLayout 添加到 Unity Player 中
                   mUnityPlayer.addView(frameLayout, outMetrics.widthPixels, outMetrics.heightPixels);
                
    
                //--使用Gif---
    //             gv = new GifImageView(mUnityPlayer.currentActivity);
    //             gv.setMovie(mUnityPlayer.currentActivity.getAssets().open("loadAnimation.gif"),realScreenWidth / 2 - 353,realScreenHeight / 2-353);
    //             gv.setScaleType(ImageView.ScaleType.CENTER);
    //             mUnityPlayer.addView(gv, realScreenWidth, realScreenHeight);
                 //--使用Gif END---
                //Log.v("test",p.x+"");
    
    
            } catch (Exception e) {
                // error("[onShowSplash]" + e.toString());
            }
        }
    
        /**
         * 隐藏splash
         */
        public void hideSplash() {
            try {
              if (frameLayout == null)  // 先检查 frameLayout 是否存在
                         return;
             
                     runOnUiThread(new Runnable() {
                         public void run() {
                             // 移除整个 FrameLayout(包括 bgView 和 logoView)
                             mUnityPlayer.removeView(frameLayout);
                             frameLayout = null;
                         }
                     });
            } catch (Exception e) {
                // error("[onHideSplash]" + e.toString());
            }
        }

在C#中等展示完loading下一帧hideSplash,这样就实现了全屏底图+居中适配向上偏移461的logo

相关推荐
丘狸尾1 小时前
[cisco 模拟器] ftp服务器配置
android·运维·服务器
向宇it1 小时前
【从零开始入门unity游戏开发之——unity篇01】unity6基础入门开篇——游戏引擎是什么、主流的游戏引擎、为什么选择Unity
开发语言·unity·c#·游戏引擎
van叶~3 小时前
探索未来编程:仓颉语言的优雅设计与无限可能
android·java·数据库·仓颉
Crossoads7 小时前
【汇编语言】端口 —— 「从端口到时间:一文了解CMOS RAM与汇编指令的交汇」
android·java·汇编·深度学习·网络协议·机器学习·汇编语言
向宇it7 小时前
【从零开始入门unity游戏开发之——C#篇26】C#面向对象动态多态——接口(Interface)、接口里氏替换原则、密封方法(`sealed` )
java·开发语言·unity·c#·游戏引擎·里氏替换原则
li_liuliu8 小时前
Android4.4 在系统中添加自己的System Service
android
C4rpeDime10 小时前
自建MD5解密平台-续
android
鲤籽鲲12 小时前
C# Random 随机数 全面解析
android·java·c#
神码编程13 小时前
【Unity功能集】TextureShop纹理工坊(五)选区
unity·游戏引擎·shader·ps选区
m0_5485147716 小时前
2024.12.10——攻防世界Web_php_include
android·前端·php