【Unity】在Unity中创建简单的UI界面

实现的效果为:设置一个触发盒子,当玩家触发后显示一个游戏结束界面,并结束游戏。

在Hierarchy中新建一个Canvas。命名为Canvas。

双击刚才创建的画布Canvas。如果需要,可以调整其属性。默认情况下这个画布会铺满整个屏幕。

编辑UI时应该关掉特效,打开2D界面。(如下图所示)

选中刚才创建的Canvas,在Canvas下新建一个UI-Image。命名为Background。这个组件用于设置UI的背景。

选中刚才创建的Background。通过调整数值令其铺满整个画布(Canvas)。

还可以通过更改其Image组件的Color属性更改其背景颜色。(如下图所示)

右键刚才创建的背景,再新建一个UI-Image作为其子项,命名为Image。

点击新建的这个组件,为其添加图片。还可以调整其位置。(如下图所示)

效果如下所示。

UI开始的时候不能显示,所以应该设置成透明。

选中创建的背景Background,为其添加Canvas Group组件。在这个组件中将Alpha属性设置成0。

这样UI开始时就会是透明的。在需要用到的时候令其Alpha改变即可令其显示。

创建一个空组件,添加Box Collition组件,打开Is Trigger属性。

为这个空组件添加脚本,命名为GameEnding。代码如下:

using UnityEngine;

public class GameEnding : MonoBehaviour
{
    bool PlayerAtExit = false;
    public GameObject player;
    //UI
    public CanvasGroup backgroundImageCanvasGroup;
    //显示UI的时间
    public float disableImageDuration = 4.1f;
    //透明度
    float timer;
    //更改透明度的时间
    public float fadeDuration = 1.0f;
    //触发器事件,传入控制的触发器
    private void OnTriggerEnter(Collider other)
    {
        //如果进入触发器的时玩家
        if (other.gameObject == player)
        {
            PlayerAtExit = true;
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (PlayerAtExit)
        {
            EndLevel();
        }
    }
    //结束关卡
    void EndLevel()
    {
        timer += Time.deltaTime;
        backgroundImageCanvasGroup.alpha = timer / fadeDuration;
        if (timer > fadeDuration + disableImageDuration)
        {
            //退出应用(打包后生效)
            Application.Quit();
            //编辑器内退出
            UnityEditor.EditorApplication.isPlaying = false;
        }
    }
}

将角色以及Background传入脚本中。

运行游戏,可以看到角色走到触发盒子中后,UI成功触发。

Original: https://www.cnblogs.com/Wu-765279087/p/16417699.html
Author: IDEA_W
Title: 【Unity】在Unity中创建简单的UI界面

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590587/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • SpringBoot 整合缓存Cacheable实战详细使用

    前言 我知道在接口api项目中,频繁的调用接口获取数据,查询数据库是非常耗费资源的,于是就有了缓存技术,可以把一些不常更新,或者经常使用的数据,缓存起来,然后下次再请求时候,就直接…

    Java 2023年6月13日
    0120
  • RabbitMQ:大白话讲解RabbitMQ架构原理

    MQ是什么? MQ全称Message Queue,中文名称消息队列。顾名思义,它就是一个队列,简单来说就是一个应用程序A将数据丢到一个队列中,由另一个应用程序B从队列中拿到这个数据…

    Java 2023年5月30日
    078
  • 设计模式—六大设计原则

    六大设计原则 单一职责原则 我们分别看两个案例,一个是遵守单一职责原则,另一个是违背。 违背的案例 public class Computer { void calc() { Sy…

    Java 2023年6月7日
    088
  • 链表——数据结构

    1.翻转链表 给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。 示例1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例2:…

    Java 2023年6月7日
    089
  • 分布式基础- 拜占庭将军问题

    一 背景 拜占庭将军问题是如何通过通讯方式来达成共识得问题,Leslie Lamport 来借助这个问题说明如何在分布式环境下达成共识。 拜占庭将军问题是这样的:拜占庭帝国的军队在…

    Java 2023年5月30日
    091
  • WebSocket(SuperSocket.WebSocket实现)服务端主动断开客户端的连接

    WebSocket(SuperSocket.WebSocket实现)服务端主动断开客户端的连接 使用SuperSocket.WebSocket实现的WebSocket服务端,当有W…

    Java 2023年5月30日
    093
  • aardio + AutoHotkey 混合编程

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月16日
    078
  • MySQL 添加用户并授予只能查询权限

    创建用户 create user ‘userName’@’%’ identified by ‘123456’…

    Java 2023年6月8日
    067
  • Java 北京时间 转 UTC时间

    ” 北京时间” 转为” UTC时间“,根据需要转换格式不同,实现方式有所不同。 简单整理如下4种格式: 1、UTC格式:2021-1…

    Java 2023年5月29日
    063
  • 转载:Error:(1, 1) java: 非法字符: ‘ufeff’

    https://www.cnblogs.com/diffx/p/10000123.html 一、问题 用IDEA打开eclipse java项目编译时,出现以下错误: Error:…

    Java 2023年5月29日
    090
  • springboot发送邮件

    springboot发送邮件 简化版: 1.pom.xml引入依赖 <!– e-mail–> <dependency> <groupid>c…

    Java 2023年6月15日
    051
  • Java通过PriorityQueue构建大顶堆和小顶堆

    Comparator comparator = Comparator.comparing(Obj::getValue); 小顶堆: PriorityQueue minHeap = …

    Java 2023年5月29日
    078
  • Spring Boot优化

    针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点: 线程数 超时时间 jvm优化 首先线程数是一个重点,初始线程数和最大线程数,初始线程数保障启动的时候,如果有大量用户…

    Java 2023年5月30日
    0117
  • php部署到nginx时遇到的问题

    1、权限问题 nginx用户、php用户最好不要用默认的:nobody,因为权限不够。 可以创建新的用户和用户组: 然后修改:nginx.conf 修改:php-fpm.d/www…

    Java 2023年5月30日
    076
  • Java list对象列表排序 实例

    package com.test; public class Bean { private String name; private int priority; public St…

    Java 2023年5月29日
    087
  • Java集合,队列,链表总结

    面向对象 封装 – 隐藏对象的属性和实现细节,仅对外公开接口; 继承 – 子类继承父类的特征和行为; 多态 – 同一个行为具有多个不同表现形式或…

    Java 2023年6月7日
    096
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球