背景:美工作好的動畫須要放在引擎場景中看效果,有如下要求: 1.因爲動畫有帶位移狀況存在並且須要看當前模型與其餘模型的互動狀況,因此不便於在動畫文件的inspector-》preview視窗下觀察。 2.儘可能簡單傻瓜式操做,須要去輸入參數的地方儘可能要少。 3.因爲只是爲了方便把作好的動畫放在引擎場景中觀察因此要對動畫片斷的數量與命名不加以限制。 好了,簡單寫了一個以爲挺好玩挺方便的。只要把下面的腳本掛在一個帶有動畫關聯的模型上便可使用。可能須要修改的參數爲inspector面板中腳本下scroll於button的值。這兩個RECT控制滾動視圖與動畫按鈕的UI佈局。 第一次發帖,歡迎你們指教,廢話太多了,下面上代碼 private GameObject m_gameobject; private AnimationClip[] m_aClip; private int m_max_i; private Vector2 m_scrollPosition = Vector2.zero; public Rect m_scroll= new Rect(20,20,0,200); private Rect m_view; public Rect m_button = new Rect(0, 0, 100, 20); void Start () { m_gameobject = this.gameObject; m_max_i = m_gameobject.animation.GetClipCount(); m_aClip = new AnimationClip[m_max_i]; int i = 0; foreach (AnimationState state in animation) { m_aClip = state.clip; i++; } i = 0; m_scroll.width = m_button.xMin + m_button.width + 20; m_view.height = m_button.yMin + m_max_i * m_button.height; } void Update () { } void OnGUI() { m_scrollPosition = GUI.BeginScrollView(m_scroll, m_scrollPosition, m_view, false, false); for (int i = 0; i < m_max_i; i++) { if (GUI.Button(new Rect(m_button.xMin, m_button.yMin + i * m_button.height, m_button.width, m_button.height), m_aClip.name)) { PlayerButton(i); } } GUI.EndScrollView(); } void PlayerButton(int m_i) { m_gameobject.animation.Play(m_aClip[m_i].name); }