RigidbodyConstaints
bir numaralandırma (enum
, küçük kelime in the doc zihin), önce bir kopyasını yapmadan doğrudan değiştirmeniz gerekir olduğunu. Her enum
using UnityEngine;
using System.Collections;
public class PosFreezer : MonoBehaviour {
void Start() {
var rb = GetComponent<Rigidbody>();
//Modify the constraints directly.
rb.constraints = RigidbodyConstraints.FreezePositionY;
}
}
Yani, unutmayın:
using UnityEngine;
using System.Collections;
public class PosFreezer : MonoBehaviour {
void Start() {
var rb = GetComponent<Rigidbody>();
var constr = rb.constraints; //grab a copy (NOT a reference)
constr = RigidbodyConstraints.FreezePositionY; //(modify the copy)
}
}
Bu değildir: bu kodu ile, bu başarısız , bu yüzden değiştirmek o zaman, bu enum bir kopyasını çekiyoruz , reference type
olan bir struct
gibi bir değer, bir struct
gibi bir değerdir. Bir değer türünün kopyasını almak ve yerel olarak değiştirmek muhtemelen istediğinizi yapmaz.
var test = GetComponent<Rigidbody>().constraints;
test = RigidbodyConstraints.FreezePositionY;
GetComponent<Rigidbody>().constraints = test;
Ama bu durumda dağınık ve okunamaz için: Eğer yazılı olsaydı Kodunuz ancak aynı zamanda ızgaralarının.
Çok teşekkürler! – Andrew