欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > Unnity IOS安卓启动黑屏加图(底图+Logo gif也行)

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

2024/11/29 18:24:46 来源:https://blog.csdn.net/qq_42980269/article/details/142327948  浏览:    关键词:Unnity IOS安卓启动黑屏加图(底图+Logo gif也行)

Ios篇

在Xcode中创建Storyboard文件,2019及之之前版本应该是XIB文件,创建方法
在Unity-IPione先创建一个文件夹命名为View 啥都行 然后把图篇资源拉进来
在这里插入图片描述

然后创建
在这里插入图片描述
Storyboard就是第二个 XIB就是第三个
在这里插入图片描述
需要创建两个 一个是手机 是个是pad
然后点击 右上角的+ 创建一个ImageView 拉到xib里面 右侧选择图 然后选择适配
左边箭头选择图 右边箭头适配
在这里插入图片描述
一般需要两个图 一个是底图 一个是logo

然后在Unity中选择创建的这两个文件
在这里插入图片描述
然后打包测试

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

安卓篇

在StreamingAssets放两张图
在这里插入图片描述
然后编辑MainActivity.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;
        private  ImageView bgView = null;FrameLayout frameLayout = null ;

onCreate中调用showSplash

  protected void onCreate(Bundle bundle) {Log.d("Unity", "MainActivity On Create");super.onCreate(bundle);showSplash();
  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
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com