试用Unity3D体验(二):添加一个启动界面

上一篇【试用Unity3D体验(一):创建一个UWP游戏

本日目标

今天时间又比较空闲,准备给游戏增加一个启动页面。专业的叫法不太清楚,就是游戏开始的时候选择新游戏,或者加载进度的那个页面

新工具安装

Device Simulator 是一个不错的工具,从别人那里听来的。今天要做UI界面,先安装一个这样的工具。因为是preview版本,所以直接查询的时候是找不到的。要先打开允许预览包的功能。【窗口】—》【包管理器】—》【高级项目设置】

 检索到 Device Simulator 并安装

添加一个新场景

【文件】 —》【新建场景】,我这里选择了 Empty,只是为了体验。之后还是用 Basic 比较快一些。

保存新场景【文件】 —》【保存】,然后我起了一个名称 "Index.unity"。

打开2D开关。

因为我们添加的是Empty,所以没有摄像机。选择 【游戏对象】-》【摄像机】添加一个摄像机

添加一个画布,【选中新添加的场景】 —》【游戏对象】 —》【UI】—》【画布】,这个时候会创建出2个对象,千万别删除了 EventSystem,它不是多余的。之后你操作页面,没有它就完不成 Input。

 选择刚才创建 Canvas (画布) 附带的 EventSystem,这里要修改一下 Input Module,因为我们之前创建的模板使用的是 New Input System,所以这里要保持一直。在检测器中,点击【Replace with Input System UI Input Module】。我一直在考虑是不是要切换回英文,中文界面没做完,太别扭了。

 【选中画布】-》【游戏对象】-》【UI】-》【图像】,并且在【检查器】中设置 【Rect Transform】为左右居中,上下扩展。大概是这个意思。

调整【顶部】【底部】都为 0,然后去 https://cn.bing.com 查找一张免费授权的图片,或者你自己准备一张也行。选一张看的顺眼的,因为我不会用于商业,所以选 free to share and use也就好了。 

下载成 jpg 文件,如果是 jfif 文件需要转化一下格式。在Scenes目录下新建一个文件夹 ,把刚才的 jpg 拖入。

然后找到图片,在【检查器】中修改 【纹理类型】为【Sprite (2D和UI)】

 在【检查器】中修改宽度为4096(4K电视 4096×2160),然后【源图像】那里选择刚才添加的图片。【位置X】我喜欢完全居中,也调整成0。 这里有一个坑,就是图片在不同分辨率下会变形。写个脚本可以处理,不过我们先不理会。

 现在开始预览图片,之前我们安装的 Device Simulator 上场了。【窗口】 —》【常规】—》【Device Simulator 】打开模拟器。这里选择不同的设置,查看UI的效果。可以看到我们在IPhone 12 mini 下图片变形严重,之后有时间在弄吧 。

【选中画布】-》【游戏对象】-》【UI】-》【按钮】,这里先放三个按钮。每个按钮创建后下面自带一个 Text。

设置三个按钮的 宽度 640,高度 120。底部居中对齐。位置Y 分别设置成 160、420、520。我们的目标不是好看,是把程序先跑起来。所以这里不纠结这么做是否美观。

 选择按钮下的文本,在【检测器】里设置【字体大小】和 【字体样式】。

看一下最终效果,发现自己的审美差到不行。就这样吧,我们要开始做下面的了。

 我们希望点击【新的开始】时,可以进入到我们第一篇文章的场景中。首先要先打开【文件】-》【生成设置】-》点击【添加已打开的场景】(或者从【项目】窗口找到要添加的场景拖到这里)。操作完以后我们的场景就有2个了,拖动调整Index到0 。

 创建一个脚本,我喜欢放【Index】目录下,放哪不关键。(scripts目录就当没看到)

 双击启动 VS 编辑文件。别忘记增加【using UnityEngine.SceneManagement;】,我截图的时候忘记了。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class ButtonClick : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    public void StartGame()
    {
        SceneManager.LoadScene("Playground");
    }
}

把脚本添加到【画布】上,其实还有其它地方可选,包括新建一个空的游戏对象。不过我就省事了。(把脚本拖过来,或者按【添加组件】-》脚本-》选择【刚才创建的脚本】)

选择开始游戏的按钮,先点【鼠标单击()】下面的【+】号,添加一行;然后第一个下拉菜单选择【Runtime Only】,再点击选择【Runtime Only】下面的选择器,弹出的窗口中tab 切换到【场景】标签,选择挂载脚本的对象(我把脚本挂画布上了,所以这里选 Canvas); 最后在【Runtime Only】右侧的下拉菜单中就可以选择到 【ButtonClick 】-》【StartGame】。【ButtonClick 】、【StartGame】这2个名字是我脚本中定义的,如果你修改了类名和方法名,请选择对应的。

重复昨天的过程,先生成一个VS项目,然后再生成 UWP。安装完成后,可以在开始菜单中找到游戏玩一会儿了。

重要提示:我在运行游戏的时候点击【新的开始】,一度以为没有反应(点击我没加声音或其它效果,看不出来),耐心等一会儿就加载好第二个场景了。这个是正常现象,下一次我们做一个loading页面,用异步的方式加载新场景。

最后签入代码,今天的学习结束了。

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值