Unity 之 变量修饰符public 与private 以及默认

news2024/11/24 12:12:10

文章目录

  • public
  • private
  • 默认情况的成员变量

在这里插入图片描述

public

当在Unity中使用public修饰符时,它将变量声明为公共变量,这意味着该变量可以在Unity编辑器中进行设置,并且可以从其他脚本中访问和修改。公共变量在Unity中广泛用于在脚本之间共享数据,以及在Inspector面板中显示自定义设置。以下是关于public修饰符的详细信息和示例:

说明

  • 使用public修饰符时,变量将在Unity的Inspector面板中显示为可以编辑的字段。
  • 其他脚本可以通过引用包含该变量的脚本实例来访问和修改这些公共变量。

示例
假设您有一个脚本用于控制玩家的移动,并且您希望在其他脚本中访问和修改玩家的移动速度。您可以在这个脚本中声明一个公共变量来表示玩家的速度:

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    // 声明公共变量用于存储玩家的移动速度
    public float moveSpeed = 5.0f;

    // 在这里编写移动逻辑等
}

在这个示例中,moveSpeed被声明为公共变量。这意味着您可以在Unity的Inspector面板中找到这个脚本并设置moveSpeed的值。另外,其他脚本也可以通过引用PlayerController脚本的实例来访问和修改moveSpeed的值。

假设您有另一个脚本,用于控制一个敌人的行为。您可以在该脚本中引用PlayerController脚本的实例,并使用公共变量moveSpeed

using UnityEngine;

public class EnemyController : MonoBehaviour
{
    // 引用PlayerController脚本的实例
    public PlayerController playerController;

    // 在某个方法中使用公共变量
    private void ChasePlayer()
    {
        transform.Translate(Vector3.forward * playerController.moveSpeed * Time.deltaTime);
    }
}

在这个示例中,EnemyController脚本引用了PlayerController脚本的实例,并在ChasePlayer()方法中使用了playerController.moveSpeed

通过在需要共享数据的脚本中使用public修饰符,您可以实现在不同脚本之间传递数据,使代码更加模块化和易于维护。但是,请注意,过多地使用公共变量可能会导致代码耦合度增加,因此需要权衡使用。

private

当在Unity中使用private修饰符时,它将变量声明为私有变量,这意味着该变量只能在当前脚本中访问,其他脚本无法直接访问或修改它。私有变量常用于将某些数据隐藏在脚本内部,以确保数据的安全性和封装性。以下是关于private修饰符的详细信息和示例:

说明

  • 使用private修饰符时,变量将仅在声明它的脚本内部可见。
  • 其他脚本无法直接访问或修改私有变量。

示例
假设您有一个脚本用于控制玩家的生命值,并且您不希望其他脚本直接访问或修改玩家的生命值。您可以在这个脚本中声明一个私有变量来表示玩家的生命值:

using UnityEngine;

public class PlayerHealth : MonoBehaviour
{
    // 声明私有变量用于存储玩家的生命值
    private int health = 100;

    // 在这里编写处理生命值的逻辑等
}

在这个示例中,health被声明为私有变量。这意味着其他脚本无法直接访问或修改health的值。

您可以在同一个脚本中创建公共方法来允许其他脚本间接地访问和修改私有变量。例如,您可以创建一个方法来获取玩家的生命值:

public int GetHealth()
{
    return health;
}

这样,其他脚本可以通过调用GetHealth()方法来获取玩家的生命值,而无需直接访问私有变量。

通过使用私有变量,您可以封装和保护数据,从而避免了其他脚本意外地修改或访问您不想暴露的数据。这有助于维持代码的安全性和整洁性。

默认情况的成员变量

当在Unity中声明成员变量时,如果您没有显式指定访问修饰符(如publicprivateprotected等),则默认的访问修饰符是private。这意味着成员变量只能在声明它们的类内部访问,其他类无法直接访问或修改这些变量。以下是关于默认情况下成员变量修饰符的详细信息:

说明

  • 默认情况下,如果您在类中声明成员变量但没有明确指定访问修饰符,它们将被视为私有成员变量。

示例

using UnityEngine;

public class Player : MonoBehaviour
{
    // 默认情况下,score被视为private成员变量
    int score = 0;

    void Start()
    {
        // 可以在类内部访问score
        Debug.Log("Current score: " + score);
    }

    // 其他成员和方法...
}

在这个示例中,由于没有指定访问修饰符,score被视为私有成员变量。这意味着只有在Player类内部的方法中可以访问和修改score。其他类无法直接访问或修改它。

要显式指定不同的访问修饰符,您可以使用publicprotectedinternal等。如果您想让成员变量在类外部可见或可修改,您需要显式地使用public或其他适当的访问修饰符。

总而言之,虽然默认情况下成员变量是私有的,但出于可读性和维护性的考虑,建议在声明成员变量时明确指定适当的访问修饰符,以便在代码中清楚地传达意图。

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

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

相关文章

4.Linux下Cmake交叉编译Qt项目到Jetson Orin Nano(arm)

由于3:Ubuntu上配置QT交叉编译环境并编译QT程序到Jetson Orin Nano(ARM)_月上林梢的博客-CSDN博客 这一篇文章只用手动配置,一直在点、点、点。比较 LOW,现在在Ubuntu上使用Cmake实现交叉编译QT程序到Jetson Orin Nano…

电脑技巧:电脑关机、休眠、睡眠之间如何选择,看完你就懂了

目录 一、关机、休眠、睡眠的区别? 1.关机 2.休眠 休眠的优点 休眠的缺点 3.睡眠 睡眠的优点 睡眠的缺点 二、什么时候关机/休眠/睡眠? 什么时候需要关机? 什么情况下使用休眠模式? 什么情况下使用睡眠模式&…

Linux之维护基本存储空间

目录 维护基本存储空间 1.查看磁盘信息(块设备)信息 2.创建分区 (1)MBR分区 标准MBR结构如下 为什么MBR最多只能有4个主分区 (2)GPT分区 优点 3.分区工具 1.使用fdisk管理MBR分区 语法格式 参数及作用 2.使用gdisk管理GPT分区 操作步骤 3.使用pa…

Java项目之基于ssm框架的社区生活超市管理系统(附源码)

基于ssm框架的社区生活超市管理系统设计与实现(程序源码毕业论文) 大家好,今天给大家介绍基于ssm框架的社区生活超市管理系统设计与实现,本论文只截取部分文章重点,文章末尾附有本毕业设计完整源码及论文的获取方式。更…

右值及右值引用

右值引用主要是为了优化。 在函数返回值没有打开-fno-elide-constructors时&#xff0c;函数返回值会调用拷贝构造函数 class X { public:X(){cout << "X ctor" << endl;}X(const X& x){cout << "X copy ctor" << endl;}~X()…

【数据库】表字段设计时不推荐使用可空值(NULL)

【Mysql】数据库系列 文章目录 前言一、表和数据准备二、验证1.NOT IN子查询在有NULL值的情况下返回永远为空结果2.使用&#xff01;去查询可空值字段时&#xff0c;数据中存在NULL&#xff0c;NULL记录查询不到3.如果在两个字段进行拼接&#xff1a;比如前缀名字&#xff0c;字…

Azure虚拟网络对等互连

什么是Azure虚拟网络对等互联 Azure虚拟网络对等互联&#xff08;Azure Virtual Network peering&#xff09;是一种连接两个虚拟网络的方法&#xff0c;使得这两个虚拟网络能够在同一地理区域内进行通信。它通过私有IP地址在虚拟网络之间建立网络连接&#xff0c;不论是在同一…

Java 项目日志实例:LogBack

点击下方关注我&#xff0c;然后右上角点击...“设为星标”&#xff0c;就能第一时间收到更新推送啦~~~ LogBack 和 Log4j 都是开源日记工具库&#xff0c;LogBack 是 Log4j 的改良版本&#xff0c;比 Log4j 拥有更多的特性&#xff0c;同时也带来很大性能提升。LogBack 官方建…

华为OD机试 - 全量和已占用字符集 - 数据结构map(Java 2022 Q4 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》…

基于51单片机直流电机PWM调速液晶1602显示设计

一、系统方案 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统&#xff0c;并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节&#xff0c;从而控制其输入信号波形等…

Endnote在线链接pubmed的时候报错12057:不能连接到吊销服务器,或者未能获得最终响应?

​嘎嘎嘎问题如下&#xff1a; 解决办法&#xff1a; 打开控制面板: ok,完了之后再去EndNote就不会出现此问题了。&#xff08;有的可能需要重启电脑&#xff0c;重启EndNote才会生效&#xff09;

基于MOEA/D求解电力系统中环境经济调度问题(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

三维重建_基于图像的三维重建_面片/光度一致性

参考: 深蓝学院 基于图像的三维重建 1. 三维重建的流程回顾 基于深度图的三维重建:从无序图像获取稀疏点云和位姿,然后进行多视角立体重建。 多视角立体重建包含:(输入稀疏点云、各个图像位姿、图像)先进行立体对(3D-2D,2D-2D)的选择,然后计算深度图,接着进行深度图…

如何绕过计算机任何限制

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、创建记事本总结 前言 如果您在学校的电脑或笔记本就会发现它会限制您的天马行空的想法&#xff0c;因为它会限制command&#xff0c;powershell&#xff0…

java八股文面试[JVM]——JVM内存结构

参考&#xff1a; JVM学习笔记&#xff08;一&#xff09;_卷心菜不卷Iris的博客-CSDN博客 JVM是运行在操作系统之上的&#xff0c;它与硬件没有直接的交互 JVM内存结构&#xff1a; 方法区&#xff1a;存储已被虚拟机加载的类元数据信息(元空间) 堆&#xff1a;存放对象实…

【C语言】C语言用数组算平均数,并输出大于平均数的数

题目 让用户输入一系列的正整数&#xff0c;最后输入“-1”表示输入结束&#xff0c;然后程序计算出这些数的平均数&#xff0c;最后输出输入数字的个数和平均数以及大于平均数的数 代码 #include<stdio.h> int main() {int x;double sum 0;int cnt 0;int number[100…

SAP MM学习笔记26- SAP中 振替转记(转移过账)和 在库转送(库存转储)1- 移动Type间振替转记

SAP 中在库移动 不仅有入库&#xff08;GR&#xff09;&#xff0c;出库&#xff08;GI&#xff09;&#xff0c;也可以是单纯内部的转记或转送。 1&#xff0c;振替转记&#xff08;转移过账&#xff09; 2&#xff0c;在库转送&#xff08;库存转储&#xff09; 1&#xff…

Ae 效果:CC Scale Wipe、CC Radial ScaleWipe

过渡/CC Scale Wipe Transition/CC Scale Wipe CC Scale Wipe&#xff08;CC 缩放擦除&#xff09;主要通过缩放拉伸来擦除图层内容&#xff0c;从而实现一种独特的过渡效果。 CC Scale Wipe 效果示例 ◆ ◆ ◆ CC Scale Wipe 效果属性说明 Stretch 拉伸 控制对图层内容拉伸的…

中国剩余定理及扩展

目录 中国剩余定理解释 中国剩余定理扩展——求解模数不互质情况下的线性方程组&#xff1a; 代码实现&#xff1a; 互质&#xff1a; 非互质&#xff1a; 中国剩余定理解释 在《孙子算经》中有这样一个问题&#xff1a;“今有物不知其数&#xff0c;三三数之剩二&#x…

[三次握手]TCP三次握手由入门到精通(知识精讲)

⬜⬜⬜ &#x1f430;&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;(*^▽^*)欢迎光临 &#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;&#x1f430;⬜⬜⬜ ✏️write in front✏️ &#x1f4dd;个人主页&#xff1a;陈丹宇jmu &am…