Unity在編輯面板顯示自定義的類
阿新 • • 發佈:2019-01-22
public class Boundary { public float xMin, xMax, zMin, zMax; } public class PlayerController : MonoBehaviour { public float speed; public Boundary boundary; private void FixedUpdate() { float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical); Rigidbody rigidbody = GetComponent<Rigidbody>(); rigidbody.velocity = movement * speed; rigidbody.position = new Vector3 ( Mathf.Clamp(rigidbody.position.x, boundary.xMin, boundary.xMax), 0.0f, Mathf.Clamp(rigidbody.position.z, boundary.zMin, boundary.zMax) ); } }
如上面這段程式碼所示,在c#指令碼的指令碼控制類中,新增一個自定義的類Boundary。
如何讓這個自定義類Boundary在Unity編輯面版顯示,並可以在Unity面版隨意設定該類中欄位的值?
給自定義類新增[System.Serializable]特性。
即可在Unity面板顯示這個類的屬性,效果圖如下
完整程式碼如下圖
public class Boundary { public float xMin, xMax, zMin, zMax; } public class PlayerController : MonoBehaviour { public float speed; public Boundary boundary; private void FixedUpdate() { float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical); Rigidbody rigidbody = GetComponent<Rigidbody>(); rigidbody.velocity = movement * speed; rigidbody.position = new Vector3 ( Mathf.Clamp(rigidbody.position.x, boundary.xMin, boundary.xMax), 0.0f, Mathf.Clamp(rigidbody.position.z, boundary.zMin, boundary.zMax) ); } }