【发布时间】:2016-09-18 16:09:43
【问题描述】:
我想知道在 Unity C# 运行时是否有空间更改变量的可访问性?我想要这样做的原因是当我的脚本使用另一个状态时隐藏不必要的公共变量。我尝试了一些动态变量,但我得到了找不到它的错误。
我有springDistance,但我只想在trapType 的状态为springOut 时使用它。
一些代码:
public class SpringTrap : MonoBehaviour
{
private Transform objectToMove;
// Use this for initialization
public enum TypeOfTrap
{
springOut
}
[Tooltip("Set the type of trap here to use.")]
public TypeOfTrap trapType = TypeOfTrap.springOut;
public float springDistance;
void Start ()
{
objectToMove = transform.FindChild("ObjectsToAnimate");
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.CompareTag("Player"))
{
//if the player has entered the danger zone
switch (trapType)
{
case TypeOfTrap.springOut:
break;
}
}
}
IEnumerator SpringOut(float springDistance)
{
float deltaDist = 0.0f;
while(deltaDist < springDistance)
{
objectToMove.position +=
}
}
}
【问题讨论】:
-
你的问题很模糊,没有例子,所以我真的是在黑暗中刺,但是你看过SerializeField属性吗?
-
我做了,但它没有解决我的问题,我可能用错了方法。我用一些代码更新了我的问题。
-
您的意思是,如果它们当前与脚本无关,您想将它们隐藏在编辑器(检查器)中,以免不必要地更改它们?
-
没错。如果不需要,隐藏。
-
看看自定义编辑器来做这样的事情。这是一个实际上应该与您想要做的非常相似的示例:answers.unity3d.com/questions/417837/…