Unity中计数器的实现

news2024/11/18 17:50:32

Unity中计数器的实现

  • 一、前言
  • 二、效果与逻辑
    • (一) 实现效果
    • (二)功能逻辑
  • 三、功能代码
  • 四、应用实现
  • 五、结语

一、前言

最近在开发中用到计数器,但是unity自带的UI组件中没有,所以只好自己手撸了一个,过程还是比较简单的,在这里做一个分享。
后续在外拓组件这块如果多的话,我整理一下一块打包发到资源里,大家可以自行取用😉。
话不多说,直接开始今天的内容吧!

请添加图片描述


2024.5.23 更新文章内容:修复“特定步长值时,计数超过最值”bug,感谢评论区大佬虫子技术指出bug

二、效果与逻辑

(一) 实现效果

UI可能不好看,这里干过美工可以自行设计一下,这里就用做基础的UI实现效果,重点在其功能的实现过程。

在这里插入图片描述

(二)功能逻辑

首先UI游戏对象需要创建背景image、加减按钮Button*2、数字显示TextMeshPro(或者Text)。

基本的逻辑思路是定义一个数字num,然后创建两个函数方法:一个负责加1、一个负责减1。

然后在考虑的深入一点还有计数范围:最大值和最小值,你想要的计数范围是0-10还是0-100,所以这里需要创建一个计数的范围并在加减的函数中做判断。

另外还要有步长,点一下加的按钮,数字加几?1还是2还是几?这里也要将步长单拎出来可定义。

三、功能代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class InputNumber : MonoBehaviour
{
    [Header("最大值")]
    public int maxNum;
    [Header("最小值")]
    public int minNum;
    [Header("步长")]
    public int step = 1;
    [SerializeField,Header("计数")]
    private int num = 0;
    public TextMeshProUGUI text;
    // Start is called before the first frame update
    void Start()
    {
        text.text = num.ToString();
    }

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

    //加
    public void Add()
    {
        if (num >= maxNum)
        {
            return;
        }

        //判断计算后是否超过最值
        if (num + step > maxNum)
        {
            return;
        }

        num += step;
        text.text = num.ToString();
    }

    //减
    public void Subtract()
    {
        if (num <= minNum)
        {
            return;
        }

        //判断计算后是否超过最值
        if (num - step < minNum)
        {
            return;
        }

        num -= step;
        text.text = num.ToString();
    }
}


四、应用实现

  1. 在Canvas中创建一个image做背景、一个TextMeshPro做数字显示、两个按钮做加减操作,然后调整其大小和位置,并创建一个父对象将其组合起来便于管理。(可以发现我这里将其做成了预制体,可以在其他需要用到的地方直接使用)
    在这里插入图片描述
  2. 完成之后将刚刚编写的脚本文件挂载到父物体上,然后设置其属性。
    在这里插入图片描述
  3. 给加减按钮绑定函数方法。
    选中按钮,点击Button组件中On Click()部分的加号,然后拖入父物体,选择对应的脚本即可
    在这里插入图片描述
  4. 运行测试看效果。
    请添加图片描述
    好的完活,收工下班!

五、结语

计数器基本的逻辑是实现了,但是也存在一些bug,比如步长可以设为负值,这样就不符合常理了,这里可以加上一个Range(min, max)属性修饰符限制一下其范围。

属性修饰符我也会出一篇文章列举几个常用的给大家说一下,今天的内容就到这里,下期见,拜拜!

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1687540.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚马逊云科技介绍

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 一、亚马逊云科技云计算1.1 云计算的优势 二、领先的云平台三、亚马逊云科技区域的全球网络…

1Panel应用推荐:code-server

1Panel&#xff08;github.com/1Panel-dev/1Panel&#xff09;是一款现代化、开源的Linux服务器运维管理面板&#xff0c;它致力于通过开源的方式&#xff0c;帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用&#xff0c;1Panel特别开通应用商店&am…

Redis常见数据类型(3)-String, Hash

目录 String 命令小结 内部编码 典型的使用场景 缓存功能 计数功能 共享会话 手机验证码 Hash 哈希 命令 hset hget hexists hdel hkeys hvals hgetall hmget hlen hsetnx hincrby hincrbyfloat String 上一篇中介绍了了String里的基本命令, 接下来总结一…

XV4001系列陀螺仪传感器广泛用于车载导航系统

随着汽车电子化趋势的加速&#xff0c;越来越多的汽车配备一系列先进的车载导航系统&#xff0c;这些导航系统功能的实现都依赖于精确的传感器数据(位置、车速、转向角度、车轮转速等)。传感器作为这些系统的核心组件&#xff0c;其准确性和可靠性直接影响到整个导航系统的性能…

OSPF问题

.ospf 选路 域内 --- 1类&#xff0c;2类LSA 域间 --- 3类LSA 域外 --- 5类&#xff0c;7类LSA --- 根据开销值的计算规则不同&#xff0c;还分为类型1和类型2 ospf 防环机制 区域内防环&#xff1a;在同一OSPF区域内&#xff0c;所有路由器通过交换链路状态通告&#xff…

鸿蒙原生应用元服务开发-鸿蒙真机运行项目实战与注意事项

一、解压项目注意项目包不能为中文 二、用数据线将装好DevEco Studio的电脑与设置为开发者模式的鸿蒙手机相连接。 三、将项目包托进DevEco Studio 中 注意项目包文件不能有嵌套 四、查看设备运行 五、点击项目结构 六、勾选红色框圈部分 登录开发者账号 七、选择好公司 八、等…

2024年人文艺术与创新教育国际学术会议(ICHAIE 2024)

2024年人文艺术与创新教育国际学术会议&#xff08;ICHAIE 2024) 2024 International Conference on Humanities, Arts and Innovation Education 一、【会议简介】 随着全球化的推进和科技的迅猛发展&#xff0c;人文艺术与创新教育在培养未来人才方面扮演着越来越重要的角色…

Django继承User表实现注册和登录

Django继承User表实现注册和登录 django中已经有了user表&#xff0c;这篇文章将为大家详细讲解有关Django如何继承自带user表并重写。 一、后端部分 1、引入AbstractUser并继承 &#xff08;1&#xff09;、引入 from django.contrib.auth.models import AbstractUser**&…

【设计模式深度剖析】【1】【结构型】【代理模式】| 玩游戏打怪、升级为例加深理解

&#x1f448;️上一篇:创建型设计模式对比 | 下一篇:装饰器模式&#x1f449;️ 目 录 代理模式定义英文原话直译如何理解&#xff1f; 3个角色UML类图1. 抽象主题&#xff08;Subject&#xff09;角色2. 代理类&#xff1a;代理主题&#xff08;Proxy Subject&#xff0…

Google Earth Engine(GEE)深度学习入门教程-Python数据读入篇

Python数据读入篇 前置条件&#xff1a; GEE预处理影像导出保存为tfrecord的数据包&#xff0c;并下载到本地tensorflow的深度学习环境 本篇文章的目的主要是把Tfrecord格式的数据加载为tf可使用的数据集格式 设定超参数 首先需要设定导出时的波段名称和数据格式&#xff…

leetcode437 路径总和III-哈希表+前缀和

题目 给定一个二叉树的根节点 root &#xff0c;和一个整数 targetSum &#xff0c;求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始&#xff0c;也不需要在叶子节点结束&#xff0c;但是路径方向必须是向下的&#xff08;只能从父节点到子节…

nginx开启资源目录

nginx开启资源目录表 可访问开放资源目录下的任何文件以及视频&#xff0c;图片等。可以作为一个妥妥的线上网盘资源托管空间使用。 上一篇文档揭示了nginx的神秘面纱&#xff0c;初步介绍与启动了nginx的基本功能和使用前端nginx学习配置开发验证&#xff0c;对各种配置已经…

Flutter容器

内边距padding class MyBody extends StatelessWidget {overrideWidget build(BuildContext context) {return Container(//为了可以看出内边距&#xff0c;将容器设置成红色color: Colors.red,child: Padding(padding: EdgeInsets.all(15),child: MyImage(https://raw.github…

SpheroGPT: 声控自然语言编程 AI 玩具 Demo 具身智能 图文解说 完全开源机器人

背景介绍 因为生病请了长假. 一周前状态开始恢复, 于是尝试用 LLM (ChatGPT3.5) + Sphero 开发一个可以声控自然语言编程的 AI 玩具, 作为学习 ChatGPT 应用开发的方法. 差不多十天时间把开发目标基本都实现了, 这里和大家分享一下心得体会. Demo 示例视频 先把录制的几个 d…

企业软件商城:管理路径与价值的全面解析

在现代企业的运营中&#xff0c;软件资产管理&#xff08;SAM&#xff09;的实施不仅仅是为了应对审计需要&#xff0c;更重要的是其对于企业持续健康发展的深远影响。本文将详细探讨软件合规性管理的多重意义&#xff0c;并分析如何通过恰当的环境选择和高效系统&#xff0c;提…

WPS PPT学习笔记 1 排版4原则等基本技巧整理

排版原则 PPT的排版需要满足4原则&#xff1a;密性、对齐、重复和对比4个基本原则。 亲密性 彼此相关的元素应该靠近&#xff0c;成为一个视觉单位&#xff0c;减少混乱&#xff0c;形成清晰的结构。 两端对齐&#xff0c;1.5倍行距 在本例中&#xff0c;19年放左边&#x…

淄博公司商标驳回复审条件及流程

商标是人工审查的&#xff0c;所以不同的人会有不同的想法和意见&#xff0c;导致同一案件的审查结果不同。特别是商标审查周期缩短到5个月&#xff0c;全国平均每个工作日有1万多个商标提交申请&#xff0c;而全国只有一个商标审查单位——国家商标局提交申请。这种情况下&…

AI图书推荐:用100个ChatGPT提示词掌握Python编程

《用100个ChatGPT提示词掌握Python编程》&#xff08;ChatGPT:Your Python Coach Mastering the Essentials in 100 Prompts&#xff09; 塞尔吉奥罗哈斯-加莱亚诺&#xff08;Sergio Rojas-Galeano&#xff09;是一位热情的计算机科学家&#xff0c;对人工智能、机器学习、进化…

OceanBase数据库诊断调优,与高可用架构——【DBA从入门到实践】第八期

在学习了《DBA从入门到实践》的前几期课程后&#xff0c;大家对OceanBase的安装部署、日常运维、数据迁移以及业务开发等方面应当已经有了全面的认识。若在实际应用中遇到任何疑问或挑战&#xff0c;欢迎您在OceanBase社区问答论坛中交流、讨论。此次&#xff0c;《DBA从入门到…

在线投票系统源码 网上投票平台创建 安全稳定 支持自定义投票规则+礼物道具功能

分享一款在线投票系统源码&#xff0c;是一款功能丰富、安全稳定的网络投票平台解决方案。通过本源码&#xff0c;用户可以轻松创建并管理各种在线投票活动&#xff0c;支持自定义投票规则&#xff0c;同时集成礼物道具功能&#xff0c;增强用户参与度和投票活动的趣味性&#…