菜鸟的Unity自学日志7 设置结束条件

Step 1 创建UI(user interface)

在Hierarchy窗口中创建一个image对象(图片来源
在这里插入图片描述
效果如下
在这里插入图片描述
其中EventSystem对象有一些附属的组件可以协作完成任何UI元素和玩家之间的交互,但结束的UI并不需要与玩家交互所以右键删除该组件。
在scene窗口中点击按钮因为此处的UI是一个平面图形并且我们希望不要显示之前设置的后处理特效。
设置完后效果如下
在这里插入图片描述

Step 2 Canvas对象

我们希望创建的是一个渐进出现的结束UI所以先将其更名为FaderCanvas
其中

Rect Tranform组件

控制其位置,对于根层次的UI来说它是只读的

The Canvas组件

用于怎样呈现你的UI元素,其中还有个隐藏模式如下
在这里插入图片描述
Screen Space-Overly 将该画布于其他所有元素之上显示,即置顶显示。
Screen Space - Camera显示到指定的相机,并且大小取决于画布与相机的距离。
World Space显示到指定对象的前面或后面,如不同玩家头上的身份标签。
在这里我们选择Screen Space-Overly。

Canvas Scaler组件

用于控制UI与屏幕的相对大小,我们的UI将会完全填满屏幕所以并不需要该组件,直接移除。

Graphic Raycaster组件

用于检测用户界面事件,如点击了某个UI元素,它将发送对应的事件发送给该元素,这里也不需要,直接移除。

设置子对象 Image

选中重命名为Background,用于游戏结束为UI提供一个纯黑的背景。
调整它的Rect Tranform组件属性如下
在这里插入图片描述
效果如下,其中调整的分别是锚点的位置和UI的边距如此设置即为全窗口
在这里插入图片描述

设置颜色

在Image组件中找到color属性,如下设置,A通道代表的是透明度1表示不透明
在这里插入图片描述
效果
在这里插入图片描述

添加胜利图片

以Background对象为根创建一个再Image子对象重命名为ExitImage,Rect Tranform组件设置同上,勾选Image组件中在这里插入图片描述取消拉伸。
效果如下
在这里插入图片描述

添加Canvas Group 组件

该组件允许你控制游戏对象及其所有制对象上所有可见UI元素的某些属性,如透明度。
选中Background对象,Inspector窗口中添加Canvas Group 组件,更改Alpha为0即完全透明。
在这里插入图片描述
我们希望在触发结束条件后Alpha的值渐渐变为1即渐渐出现结束UI。完成后保存

Step 3 创建触发条件

创建一个空对象,重命名为GameEnding,设置Position为(18, 1, 1.5);并为其添加Box Collider组件,勾选Is Trigger,设置size为(1,1,3.5)。
在这里插入图片描述
效果如图
在这里插入图片描述

Step 4 创建一个新脚本

在Scripts目录下创建一个C#脚本命名为GameEnding,实现监视John是否进入触发器范围内,若进入则将Alpha从0渐变为1的功能,双击打开删除Start方法。

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

public class GameEnding : MonoBehaviour
{
    public float fadeDuration = 1f;//渐变发生持续时间
    public GameObject player;//用于添加John对象
    bool m_IsPlayerAtExit;//
    float m_Timer;//记录持续时间
    public CanvasGroup exitBackroundImageCanvasGroup;//用于添加CanvasGroup组件
    public float displayImageDuration = 1f;
    void OnTriggerEnter(Collider other)//触发器
    {
         if(other.gameObject == player)//如果触发者是John
        {
            m_IsPlayerAtExit = true;//游戏结束
        }
    }
    void Update()//帧更新
    {
        if(m_IsPlayerAtExit)//如果触发了结束条件
        {
            EndLevel();//逐渐显示结束图片
        }
    }
    void EndLevel ()//处理结束画面
    {
        m_Timer += Time.deltaTime;
        exitBackroundImageCanvasGroup.alpha = m_Timer / fadeDuration;//在一秒内逐渐显示结束图片
        if (m_Timer > fadeDuration + displayImageDuration)//如果持续时间大于2秒
        {
            Application.Quit();//退出游戏
        }
    }
}
//Application.Quit();没有效果,暂时不知道原因

退出保存将其拖入GameEnding触发器对象中,将其下的两个属性分别作设置如下
在这里插入图片描述
效果
在这里插入图片描述

下一节

添加第一个敌人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值