【Unity入门】13.脚本外置参数

news2025/1/18 8:44:11

【Unity入门】脚本外置参数

    大家好,我是Lampard~~

    欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢

 

(一)外置脚本参数

(1)外置自转脚本的速度参数

    我们在RotateLogic的时候,为了实现自转功能,我们在update方法里调用了transform.Rotate方法,其中我们给他的速度设置为90°每秒,4秒转一圈

    void Update()
    {
        float speed = 90;
        this.transform.Rotate(0, speed * Time.deltaTime, 0);
    }

    当前效果:

    为了更方便的去调整这个速度,能够在编译器中像修改Position那样修改这个自转速度,我们可以把这个speed速度字段设置为全局

    public float speed = 90;
    void Update()
    {
        this.transform.Rotate(0, speed * Time.deltaTime, 0);
    }

    设置完之后看编译器,就会神奇的发现RotateLogic脚本多了一个外置的Speed参数

     修改这里的值就能同步修改脚本的速度数值,举个栗子:

(2)Tooltip给外置参数加上注解

    脚本很多,参数很多。为了更易读我们可以给外置的参数设置注解,使用到的是Tooltips方法:

Tooltips是Unity编辑器中的一个功能,用于为组件、变量、属性等提供提示信息,方便开发者使用和理解。当鼠标悬停在一个组件或变量上时,Unity编辑器会显示该组件或变量的Tooltips信息。

Tooltips信息通常用于描述该组件或变量的作用、取值范围、注意事项等,可以帮助开发者更好地理解和使用该组件或变量。同时,Tooltips信息也可以用于文档化和代码注释,方便维护和交流

     它的用法也比较简单,加上这样一行代码即可:

    [Tooltip("自转每秒Y轴旋转的角度")]
    public float speed = 90;
    void Update()
    {
        this.transform.Rotate(0, speed * Time.deltaTime, 0);
    }

    

 

(二)参数赋值的顺序

(1)参数赋值的作用

    在我们做地月系统旋转的时候,因为月亮和地球的旋转速度不一样,我们是给地球赋予了RotateLogic,然后给月亮单独写了一个MoonRotateLogic

    当我们可以直接在编译器对参数赋值,就不需要两个脚本了,把MoonRotateLogic,把RotateLogic增加组件至月亮旋转节点处,然后调节速度即可

(2)参数赋值的顺序

    上一篇在学习MonoBehaviour事件函数的时候,我们知道一个脚本会执行awake,onEnter,start,update等方法

    那如果我们定义全局变量时设定一个速度值,在编译器又设置一个速度值,awake,onEnter,start,update又分别修改这个速度值,那最终会取哪一个值呢?

     很简单,加一个日志打印看看就可以了:

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

public class RotateLogic : MonoBehaviour
{
    // Update is called once per frame
    [Tooltip("自转每秒Y轴旋转的角度")]
    public float speed = 90;

    private void Awake()
    {
        this.speed = 100;
        Debug.Log("正在执行Awake方法, 当前速度是:" + this.speed);
    }

    private void OnEnable()
    {
        this.speed = 200;
        Debug.Log("正在执行OnEnable方法, 当前速度是:" + this.speed);
    }

    // Start is called before the first frame update
    void Start()
    {
        this.speed = 300;
        Debug.Log("正在执行Start方法, 当前速度是:" + this.speed);
    }

    void Update()
    {
        this.speed = 400;
        Debug.Log("正在执行Update方法, 当前速度是:" + this.speed);
        this.transform.Rotate(0, speed * Time.deltaTime, 0);
    }
}

    然后我们在编译器把速度改成30,看看打印日志:

     可以看到哪怕我们在编译器里有修改速度值,但是在基类的事件函数中都会覆盖那个赋值,而且顺序是Awake->OnEnter->Start->Update

好啦今天就到这里,感谢阅读!!!
点赞,关注!!!

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

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

相关文章

ubuntu虚拟机下搭建zookeeper集群,安装jdk压缩包,搭建Hadoop集群与spark集群的搭建【下篇】

系列文章目录 Hadoop与主机连接以及20版本的Hadoop配置网络的问题_hadoop连不上网 Hadoop升级update命令被锁定的解决方法_hadoop重新初始化被锁住怎么办虚拟机vmware下安装Ubuntu16.04修改屏幕尺寸与更新源,以及对应的安装vim和vim常见的操作命令 文章目录 前言…

ELK部署-实现Nginx日志收集

一、部署ES 1、创建网络下载镜像 docker network create elastic docker pull elasticsearch:7.17.62、目录准备 mkdir /opt/ELK/elastic/{data,config} -p chmod 777 /opt/ELK/elastic/datacat >> /opt/ELK/elastic/config/elasticsearch.yml <<EOF cluster.na…

DFS与BFS寻找图中的所有路径(C++)

文章目录图的存储理论知识数组模拟链表数组模拟邻接表DFS 寻找所有路径代码输入数据对应图输出BFS 寻找所有路径代码输入数据对应图输出备注写在后面图的存储 理论知识 图的存储主要有 2 种方式 邻接表邻接矩阵 邻接矩阵不适合存储稀疏图&#xff0c;本文使用邻接表来存储图 …

运用Navicat 实现 DML(对表的数据进行增删改)

如何使用Navicat呢&#xff1f; 当Navicat配置好后&#xff0c;链接上数据库后。 点击查询后tables中的任意一个新建查询&#xff0c;这时就会跳出一个查询编辑器。 我在初始sql是就创建了stu表。这里就不创建了。 先选择需要的表&#xff0c; select * from 表名; 添加&…

【JAVA】经典面试题:HashMap,Hashtable和ConcurrentHashMap三者之间的区别!!!

本篇的内容是围绕哈希表来展开的&#xff0c;主要是通对HashMap&#xff0c;Hashtable&#xff0c;ConcurrentHashMap三者的特点去了解这它们之间的区别以及运用场景 目录 1. HashMap 2. Hashtable 锁太粗问题&#xff1a; 3. 扩容机制问题 3. ConcurrentHashMap Concurr…

N5183B信号发生器

N5183B N5183B,是德keysight N5183B 主要特性与技术指标信号特征9 kHz &#xff5e; 3 或 6 GHz在 3 GHz 时提供 24 dBm 功率&#xff0c;带有电子衰减器1 GHz 和 20 kHz 偏置时&#xff0c;相位噪声为 -146 dBc≤-73 dBc ACP W-CDMA 64 DPCH 和 <0.4% EVM 160 MHz 802.11…

万字长文解读Stable Diffusion的核心插件—ControlNet

目录 一、介绍 二、使用方法 三、ControlNet结构 1.整体结构 2.ControlLDM 3.Timestep Embedding 4.HintBlock 5.ResBlock 6.SpatialTransformer 7.SD Encoder Block 8.SD Decoder Block 9.ControlNet Encoder Block 10.Stable Diffusion 四、训练 1.准备数据集…

stable-diffusion-webui浅叙

GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI 使用Git下载&#xff1a; git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git 运行 webui-user.bat : git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.g…

【NestJs】使用MySQL创建多个实体

如果小伙伴还不会使用nestjs连接数据库的话 可以看我的上一篇文章 NestJs使用连接mysql企业级开发规范 关系 关系是指两个或多个表之间的联系。关系基于每个表中的常规字段&#xff0c;通常包含主键和外键。关系有三种&#xff1a; 名称说明一对一主表中的每一行在外部表中有…

从零到一发布 NPM 包

如果你负责前端的基础能力建设&#xff0c;发布各种功能/插件包犹如家常便饭&#xff0c;所以熟悉对 npm 包的发布与管理是非常有必要的&#xff0c;故此有了本篇总结文章。本篇文章一方面总结&#xff0c;一方面向社区贡献开箱即用的 npm 开发、编译、发布、调试模板&#xff…

【展会邀请】百华与您相约第104届中国劳动保护用品交易会!

重磅消息&#xff01;一场行业极具规模的劳保展 第104届中国劳动保护用品交易会 暨2023中国国际职业安全及健康产业博览会 将于2023.4.13-15在上海新国际博览中心E1-E7馆隆重举办&#xff01; 山东百华鞋业有限公司受邀参展&#xff0c;正在火热筹备中。 百华展位号 2023…

算法:将一个数组旋转k步

题目 输入一个数组如 [1,2,3,4,5,6,7]&#xff0c;输出旋转 k 步后的数组。 旋转 1 步&#xff1a;就是把尾部的 7 放在数组头部前面&#xff0c;也就是 [7,1,2,3,4,5,6]旋转 2 步&#xff1a;就是把尾部的 6 放在数组头部前面&#xff0c;也就是 [6,7,1,2,3,4,5]… 思路 思…

PasteSpider的下载和安装

你是否在纠结于k8s的庞大和复杂&#xff0c;是否在被混论的发布流程搞得焦头烂额。PasteSpider适合你&#xff01;足够小的内存资源消耗(300MB甚至更低&#xff01;)&#xff0c;不需要专业的运维知识&#xff0c;图文操作&#xff0c;支持一键发布&#xff0c;支持自动路由配置…

泛型基本说明

使用传统方法的问题分析 不能对加入到集合ArrayList中的数据类型进行约束&#xff08;不安全&#xff09;遍历的时候&#xff0c;需要进行类型转换&#xff0c;如果集合中的数据量较大&#xff0c;对效率有影响。泛型的好处 编译时&#xff0c;检查添加元素的类型&#xff0c;提…

springbean 的 setter/构造注入

文章目录前言一、另外两种注入的怎么用&#xff1f;二、使用setter和构造注入的步骤1. 搞一个配置类,用户获取spring容器中的bean2. 由于有静态方法,所以直接调用三、使用final 的构造注入方式(推荐)总结前言 我们知道,一般java中的依赖注入有三种: 1 属性注入 2 settter注入 …

Golang每日一练(leetDay0039) 二叉树专题(8)

目录 115. 不同的子序列 Distinct Subsequences &#x1f31f;&#x1f31f;&#x1f31f; 116. 填充每个节点的下一个右侧节点指针 Populating-next-right-pointers-in-each-node &#x1f31f;&#x1f31f; 117. 填充每个节点的下一个右侧节点指针 II Populating-next-ri…

模拟信号放大转换器 非隔离 线性对应输入输出 大功率负载

概述&#xff1a; 导轨安装DIN11 NIPO 系列模拟信号放大器是一种将输入信号放大、转换成按比例输出的直流信号放大器。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等需要直流信号测控的行业。此系列产品内部采用稳压电路&#xff0c;通过等比例控制线性放大输…

Threshold ECDSA——web3.0开发中的门限签名

多重签名 1.联名账户&#xff0c;任何一个密钥都能打开账户。 2.储蓄账户&#xff0c;需要所有密钥才能打开账户。 3.级联账户&#xff0c;可以使用部分密钥做部分功能&#xff0c;需要所有密钥才能执行全部功能。 4.在加密货币中&#xff0c;多重签名通过创建一个多重签名…

超详细从入门到精通,pytest自动化测试框架实战-fixture多样玩法(九)

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 在编写测试用例&…

uniapp开发小程序:使用webview 跳转外部链接

一、使用uniapp开发小程序时&#xff0c;要跳转外部链接&#xff0c;实现的效果如下&#xff1a; 二、实现的步骤&#xff1a; ①先在自己uniapp项目pages.json中建一个页面webview.vue {"path" : "pages/webview/webview","style" : …