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

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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值