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

这篇具有很好参考价值的文章主要介绍了Unity 之 变量修饰符public 与private 以及默认。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


Unity 之 变量修饰符public 与private 以及默认,Unity,unity,游戏引擎

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

总而言之,虽然默认情况下成员变量是私有的,但出于可读性和维护性的考虑,建议在声明成员变量时明确指定适当的访问修饰符,以便在代码中清楚地传达意图。文章来源地址https://www.toymoban.com/news/detail-667291.html

到了这里,关于Unity 之 变量修饰符public 与private 以及默认的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第八章:私有 / 公共函数 Private / Public Functions

    ​ Solidity 定义的函数的属性默认为公共。 这就意味着任何一方 (或其它合约) 都可以调用你合约里的函数。 显然,不是什么时候都需要这样,而且这样的合约易于受到攻击。 所以将自己的函数定义为私有是一个好的编程习惯,只有当你需要外部世界调用它时才将它设置为公

    2024年02月11日
    浏览(49)
  • Unity 新建你的第一个游戏,以及如何按WASD控制角色运动 (Unity Demo2D)

    当你打开 Unity Hub,初始化一个 2D 项目,进入了 Unity 编辑器,你会发现在 左侧 : 一个叫 SampleScene (或者其他) 的场景 场景下有一个 Main Camera,主相机 这就是一个新建的 2D 项目自带的内容。 在 Main Camera 同级目录新建: 2D Object - Sprites - Capsule ,这里 Capsule 是精灵的种类,我们

    2024年02月02日
    浏览(45)
  • 【C++】继承和多态、public、private、protected、重写

    继承是一种机制,通过它 一个类可以从另一个类继承属性和方法 。派生类(子类)继承基类(父类)的成员函数和数据成员,并且可以在其基础上扩展自己的成员函数和数据成员。C++支持多重继承,即一个派生类可以同时从多个基类中继承。 多态是指 同一种操作作用于不同

    2024年02月03日
    浏览(49)
  • 探讨接口方法中的 public 修饰符

    在许多编程语言中,接口(interface)是一种定义了一组规范的结构,用于指导实现类应该具有哪些方法。在接口中,方法的可见性是一个重要的话题,而有些语言中对于接口方法中是否需要显式添加 ‘public’ 修饰符存在一些讨论。 首先,让我们来看一下接口中方法的默认可

    2024年01月18日
    浏览(30)
  • C#类(一):类和对象---private、protected、public

    随着我国国力逐渐强盛,在多个城市中已经搭建了更为方便的公共交通:地铁。 搭乘地铁的之前,工作人员会对所有乘客进行安检,除了乘客的提包,而且还要确保乘客没有随身携带危险物品。 本关任务:编写一个乘客类,乘客成员属性包括提包和衣物,其中提包对工作人

    2024年02月06日
    浏览(36)
  • 【面试题05】private、protected、public、final 区别是什么

    本文已收录于PHP全栈系列专栏:PHP面试专区。 计划将全覆盖PHP开发领域所有的面试题, 对标资深工程师/架构师序列 ,欢迎大家提前关注锁定。 关于这几个限定词,是一些比较基础的面试题,一般我们肯定知道他们的用法,但是为什么这么用,很多时候还是值得思考的。今

    2024年02月10日
    浏览(48)
  • 轻松理解Java中的public、private、static和final

    一、概念 1、public和private 两个都是访问权限修饰符,用于控制外界对类内部成员的访问。 public:表明对象成员是完全共有的,外界可以随意访问。用public修饰的数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用。 private:表明对象成员是完全私有的,不

    2024年02月16日
    浏览(42)
  • Unity3D学习记录01:URP渲染管线以及3D游戏场景设置

    以下内容所使用的版本均为Unity2022.3 先在 Window-Package Manager-Unity Registry 里面搜索添加Universal RP   Unity中,创建渲染管线的方式为Asset文件夹下右键 Create-Readering-URP Asset(with Universal Asset) 会创建以下两个Pipeline:  接着在图中的设置里添加这两个渲染管线(Project Setting在Edit窗口下

    2024年02月08日
    浏览(58)
  • [游戏开发][Unity]Assetbundle加载篇(4)检查断点续传以及开始下载AB包

    打包与资源加载框架目录 下 载 AB包之前,要检查该AB包是否下载中断过,例如用户杀程序,卡死等情况。 前文有讲解过,下载AB包会先下载到临时文件夹,全部下载成功后,全部剪切到persistentDataPath沙盒目录中。 回顾一下之前的筛选机制,哪些AB包可以加入下载列表,其中并

    2024年02月08日
    浏览(47)
  • [游戏开发][Unity]Assetbundle下载篇(4)检查断点续传以及开始下载AB包

    打包与资源加载框架目录 下 载 AB包之前,要检查该AB包是否下载中断过,例如用户杀程序,卡死等情况。 前文有讲解过,下载AB包会先下载到临时文件夹,全部下载成功后,全部剪切到persistentDataPath沙盒目录中。 回顾一下之前的筛选机制,哪些AB包可以加入下载列表,其中并

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包