从另一个类调用受保护的变量



我需要在另一个公共类的私有方法中将一个受保护的变量从公共类调用到if语句中我正在编写一个统一的视频游戏程序,我需要在if语句中使用bool变量(显示角色是否耐力不足(来确定角色是否可以运行这就是我的代码的样子,排除了与问题无关的所有内容

Public class CharacterStats : MonoBehaviour
{
[SerialzeField] protected bool Tired;
}
Public class PlayerMovement : MonoBehaviour
{
Private void HandleRunning()
{
If (Input.GetKeyDown(KeyCode.LeftShift) && X != True) 
{
Speed = RunSpeed;
}
}
}
X is where I want the Tired variable to be.   

使用public只读属性,例如

public class CharacterStats : MonoBehaviour
{
// Keep you serialized field protected
[SerialzeField] protected bool tired;
// Have a public read-only accessor property
public bool Tired => tired;
}

然后例如

public class PlayerMovement : MonoBehaviour
{
// Somehow you will need to get a reference to the CharacterStats instance
// e.g. via the Inspector
[SerializeField] private CharacterStats stats;
[SerializeField] private float RunSpeed;
private float Speed;
private void HandleRunning()
{
if (Input.GetKeyDown(KeyCode.LeftShift) && !stats.IsTired) 
{
Speed = RunSpeed;
}
}
}

或者(我向回答这个问题的@aybe道歉(,你实际上可以直接使用显式序列化属性

[field: SerializeField] public bool Tired { get; protected set; }

这是一个每个人都可以访问的属性,但只有这个类和继承的类(由于现在的序列化,Inspector(才有权设置值。


一般来说:修复您的套管!在c#中,所有关键字都是较低的关键字!

最新更新