Я хочу знать, есть ли возможность изменить доступность переменной во время выполнения в 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] (https://docs.unity3d.com/ScriptReference/SerializeField.html) атрибут? – TVOHM
Я сделал, но это не решило мою проблему, я, возможно, использовал ее неправильно. Я обновляю свой вопрос с помощью некоторого кода. – agiro
Вы хотите, чтобы вы спрятали их в редакторе (инспекторе), если они в настоящее время не актуальны для скрипта, чтобы они не менялись без необходимости? –