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

文章目录

  • 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或其他适当的访问修饰符。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

快速排序 | C++|时间空间复杂度

1.概念 快速排序(QuickSort)的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。 2.算法思想描述 1.进行一次划分&…

框架分析(1)-IT人必须会

框架分析(1)-IT人必须会 专栏介绍当今主流框架前端框架后端框架移动应用框架数据库框架测试框架 Angular关键特点和功能:组件化架构双向数据绑定依赖注入路由功能强大的模板语法测试友好 优缺点分析优点缺点 总结 专栏介绍 link 主要对目前市…

用例图的基本概念及其使用方式(包含案例)

一、引言 用例(Use Case),是软件工程或系统工程中对系统如何反应外界请求的描述,是一种通过用户的使用场景来获取需求的技术。此概念“用例”的提出者为Ivar Jacobson。每个用例提供了一个或多个场景,该场景说明了系统是如何和最终用户或其它…

Android Studio实现读取本地相册文件并展示

目录 原文链接效果 代码activity_main.xmlMainActivity 原文链接 效果 代码 activity_main.xml 需要有一个按钮和image来展示图片 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk…

亚信科技AntDB数据库连年入选《中国DBMS市场指南》代表厂商

近日&#xff0c;全球权威ICT研究与顾问咨询公司Gartner发布了2023年《Market Guide for DBMS, China》&#xff08;即“中国DBMS市场指南”&#xff09;&#xff0c;该指南从市场份额、技术创新、研发投入等维度对DBMS供应商进行了调研。亚信科技是领先的数智化全栈能力提供商…

Nginx的介绍

本资料转载于传智教育-解锁你的IT职业薪未来&#xff0c;仅用于学习和讨论&#xff0c;如有侵权请联系 视频地址&#xff1a;04-Nginx的优点_哔哩哔哩_bilibili 资源文档&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1RlFl92FdxRUqc858JSxPSQ 提取码&#xff1a;12…

极智嘉x吉利汽车 x京东物流,引领汽车行业智慧物流新变革!

近日&#xff0c;中国领先的汽车制造商吉利汽车携手中国领先的技术驱动的供应链解决方案及物流服务商京东物流、全球仓储机器人引领者极智嘉(Geek)&#xff0c;在西安吉利汽车制造基地RDC仓库率先落地SkyPick上存下拣解决方案&#xff0c;实现了全物流链精益化、智能化、一体化…

热电联产在综合能源系统中的选址定容研究(matlab代码)

目录 1 主要内容 目标函数 程序模型 2 部分代码 3 程序结果 1 主要内容 该程序参考《热电联产在区域综合能源系统中的定容选址研究》&#xff0c;主要针对电热综合能源系统进行优化&#xff0c;确定热电联产机组的位置和容量&#xff0c;程序以33节点电网和17节点热网为例…

70 # 协商缓存的配置:通过修改时间

对比&#xff08;协商&#xff09;缓存 比较一下再去决定是用缓存还是重新获取数据&#xff0c;这样会减少网络请求&#xff0c;提高性能。 对比缓存的工作原理 客户端第一次请求服务器的时候&#xff0c;服务器会把数据进行缓存&#xff0c;同时会生成一个缓存标识符&#…

传统车间VS数字化车间,以MES为核心打造智能工厂!

传统车间的生产制造场景往往存在着信息沟通不顺畅&#xff0c;传达不到位的情况&#xff0c;导致生产效率受影响。 其次车间数据的“缓存期”偏短&#xff0c;无法进行长时间的复盘总结&#xff0c;从而难以发现企业管理问题&#xff0c;无法持续改善。 随着大数据、工业互联…

【大虾送书第六期】搞懂大模型的智能基因,RLHF系统设计关键问答

目录 ✨1、RLHF是什么&#xff1f; ✨2、RLHF适用于哪些任务&#xff1f; ✨3、RLHF和其他构建奖励模型的方法相比有何优劣&#xff1f; ✨4、什么样的人类反馈才是好的反馈 ✨5、RLHF算法有哪些类别&#xff0c;各有什么优缺点&#xff1f; ✨6、RLHF采用人类反馈会带来哪些局…

【UniApp开发小程序】商品详情展示+评论、评论展示、评论点赞+商品收藏【后端基于若依管理系统开发】

文章目录 界面效果界面实现工具js页面日期格式化 后端收藏ControllerServicemapper 评论ControllerServiceMapper 商品Controller 阅读Service 界面效果 【说明】 界面中商品的图片来源于闲鱼&#xff0c;若侵权请联系删除 【商品详情】 【评论】 界面实现 工具js 该工…

【虫洞攻击检测】使用多层神经网络的移动自组织网络中的虫洞攻击检测研究(Matlab代码实现)

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

Web网页浏览器远程访问jupyter notebook服务器【内网穿透】

文章目录 前言1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook&#xff0c;它是一个交互式的数据科学和计算环境&#xff0c;支持多种编程语言&#xff0c;如…

zotero在不同系统的安装(win/linux)

1 window系统安装 zotero 官网&#xff1a; https://www.zotero.org/ 官方文档 &#xff1a;https://www.zotero.org/support/ (官方)推荐常用的插件: https://www.zotero.org/support/plugins 入门视频推荐&#xff1a; Zotero 文献管理与知识整理最佳实践 点击 exe文件自…

安全学习DAY17_信息打点-语言框架组件识别

信息打点-WEB打点-语言框架&开发组件 文章目录 信息打点-WEB打点-语言框架&开发组件本节涉及链接&工具本节知识&思维导图基础概念介绍框架&#xff1a;组件&#xff1a;Web架构 对应Web测试手法后端&#xff1a;前端组件&#xff1a;java居多&#xff0c;框架&…

物联网在制造业中的应用

制造业目前正在经历第四次工业革命&#xff0c;物联网、人工智能和机器人等技术进步正在推动行业的发展。研究表明&#xff0c;到2024年&#xff0c;全球制造商将在物联网解决方案上投资700亿美元&#xff0c;许多制造商正在实施物联网设备&#xff0c;以利用预测性维护和复杂的…

LeetCode450. 删除二叉搜索树中的节点

450. 删除二叉搜索树中的节点 文章目录 [450. 删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/)一、题目二、题解方法一&#xff1a;递归&#xff08;一种麻烦的方法&#xff09;方法二&#xff1a;优化后的递归 一、题目 给定一个二叉搜索树的根…

系统架构设计专业技能 · 信息安全技术

系列文章目录 系统架构设计专业技能 网络技术&#xff08;三&#xff09; 系统架构设计专业技能 系统安全分析与设计&#xff08;四&#xff09;【系统架构设计师】 系统架构设计高级技能 软件架构设计&#xff08;一&#xff09;【系统架构设计师】 系统架构设计高级技能 …

C++入门知识点——解决C语言不足

&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️ &#x1f4a5;个人主页&#xff1a;&#x1f525;&#x1f525;&#x1f525;大魔王&#x1f525;&#x1f525;&#x1f525; &#x1f4a5;代码仓库&#xff1a;&#x1f525;&#x1f525;魔…