Unity红点系统的架构与设计

news/2024/4/25 12:33:14

在游戏开发中,红点系统是一种常见的功能,用于提示玩家有未读消息或待处理任务。在Unity引擎中,我们可以使用脚本来实现红点系统,下面我将介绍一种基于Unity的红点系统的架构与设计,并给出对应的代码实现。

  1. 红点系统的代码实现

首先,我们需要创建一个红点管理器的脚本RedDotManager.cs,并在该脚本中定义一个红点节点列表和一个红点节点与UI元素的映射关系。

对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。

using UnityEngine; 
using UnityEngine.UI; 
using System.Collections.Generic; public class RedDotManager : MonoBehaviour{    public static RedDotManager instance; public List<Transform> redDotNodes; private Dictionary<Transform, bool> redDotMap = new Dictionary<Transform, bool>();    void Awake()   {      instance = this;   }    public void AddRedDot(Transform uiElement)    {       redDotMap[uiElement] = true;      UpdateRedDot(uiElement);   }    public void RemoveRedDot(Transform uiElement) {      redDotMap[uiElement] = false;    UpdateRedDot(uiElement);   }   public void UpdateRedDot(Transform uiElement)  {       bool showRedDot = redDotMap[uiElement]; uiElement.Find("RedDot").gameObject.SetActive(showRedDot); }}

在UI元素上添加一个红点节点RedDot,并在需要显示红点的时候调用AddRedDot方法,需要隐藏红点时调用RemoveRedDot方法。

public class ExampleUIElement : MonoBehaviour{    void Start()     
{         
RedDotManager.instance.AddRedDot(transform);  }     void OnDestroy()   {         
RedDotManager.instance.RemoveRedDot(transform);  }}

通过以上代码实现,我们可以在Unity中实现一个简单的红点系统。当有新的消息或任务需要提示时,我们只需要调用AddRedDot方法即可显示红点,当消息或任务已读或处理完成时,调用RemoveRedDot方法即可隐藏红点。

通过以上代码实现,我们可以在Unity中实现一个简单的红点系统。当有新的消息或任务需要提示时,我们只需要调用AddRedDot方法即可显示红点,当消息或任务已读或处理完成时,调用RemoveRedDot方法即可隐藏红点。

通过以上代码实现,我们可以在Unity中实现一个简单的红点系统。当有新的消息或任务需要提示时,我们只需要调用AddRedDot方法即可显示红点,当消息或任务已读或处理完成时,调用RemoveRedDot方法即可隐藏红点。

通过以上代码实现,我们可以在Unity中实现一个简单的红点系统。当有新的消息或任务需要提示时,我们只需要调用AddRedDot方法即可显示红点,当消息或任务已读或处理完成时,调用RemoveRedDot方法即可隐藏红点。


https://www.xjx100.cn/news/3280825.html

相关文章

Suse 12更新操作系统Openssl(3.2.0)、OpenSSH(9.6p1)及ntp(4.2.8p17)(源码编译安装)

部署前准备 安装依赖 zypper install -y gcc gcc-c glibc make autoconf openssl openssl-devel pcre-devel pam-develzypper install -y pam* zlib*SUSE的pam模块支持与其他Linux不同&#xff0c;请按需检查 openssh-9.6p1.tar.gzopenssl-3.2.0.tar.gzzlib-1.3.1.tar.gz&…

【Pytorch】各种维度变换函数总结

维度变换千万不要混着用&#xff0c;尤其是交换维度的transpose和更改观察视角的view或者reshape&#xff01;混用了以后虽然不会报错&#xff0c;但是数据是乱的, 建议用einops中的rearrange&#xff0c;符合人的直观&#xff0c;不容易出错。 一个例子&#xff1a; >>…

C#程序反编译经验总结

1. 反编译出的代码有问题时&#xff0c;可以用多个反编译工具之间的代码相互印证。&#xff08;比如.net reflector 与ILSpy&#xff09; 2. 有时Visual Studio编译的错误信息不明确时, 可以msbuild编译程序&#xff0c;msbuild的错误信息相对完整一些。 2.1 编译错误&#xf…

Java:性能优化细节11-20

Java&#xff1a;性能优化细节11-20 11. 尽量合理的创建HashMap 当你要创建一个比较大的hashMap时&#xff0c;充分利用这个构造函数 public HashMap(int initialCapacity, float loadFactor);合理初始化HashMap的容量和负载因子是提高HashMap性能的关键因素之一。HashMap在…

writing classes ... [xxx of xxxx] 执行时间太长

一、问题展示 二、解决方法 打开设置【File - Settings…】修改堆大小

css中选择器的优先级

CSS 的优先级是由选择器的特指度&#xff08;Specificity&#xff09;和重要性&#xff08;Importance&#xff09;决定的&#xff0c;以下是优先级规则&#xff1a; 特指度&#xff1a; ID 选择器 (#id): 每个ID选择器计为100。 类选择器 (.class)、属性选择器 ([attr]) 和伪…

解决vscode每次git pull/push都需要输入账号密码

git如何设置用户名 邮箱 密码 //设置用户 git config --global user.name "xxx"//设置邮箱 git config --global user.email "xxxxxx.com"//设置密码 git config --global user.password "xxxxx"解决每次git pull/push操作都需要输入密码 git …

一个开源的服务器监控管理工具

效果 安装 1.安装 yum -y install cockpit 2.开机启动 systemctl enable cockpit 3.启动 systemctl start cockpit 4.查看是否启动 [rootmini114 ~]# systemctl status cockpit ● cockpit.service - Cockpit Web ServiceLoaded: loaded (/usr/lib/systemd/system/cockp…