1. 程式人生 > >NGUI動畫/UI解決重新整理顯示錯誤的問題

NGUI動畫/UI解決重新整理顯示錯誤的問題

2.Animation動畫製作一個按圓圈軌跡移動的動畫: 預設顯示DopeSheet視窗,修改節點的屬性,選擇Curves可以看動畫曲線,我是編輯完才發現,有規律的動畫,這個曲線也是有一定規律的。直接用曲線編輯可能更加方便。修改Position屬性,.x曲線是餘弦曲線,Y是正旋弦曲線。Z軸保持0值不變,當然如果繞空間旋轉,可能Z也要跟著改變。 編輯的結果示意圖為餘弦曲線,畫的太醜了:
圓軌跡動畫曲線.bmp 3. 不確定是Unity還是NGUI的關係。總會遇到ScrollView下的子介面排序(重新定位)。     (1)在剛開啟介面(Set.Active(true))就立即排序很容易出現無效的情況。這個是Unity的一個重新整理問題,說多了都都是淚。如果出現了這樣的情況,最好active=true之後短暫延時(如0.01s)。這樣就不容易出現子節點指定位置不生效的情況了。 NGUI中實現一個子節點排序列表的ScrollView的幾種方法,如圖中結構:  UI介面.bmp

    (2)此外,如果出現頻繁執行UIScrollView.Resetpotiion()發現各種顯示異常,對!僅僅是顯示異常,物件座標引數什麼的全都OK的情況下,只要後面多加兩行: UIScrollView.SetActive(false);
UIScrollView.SetActive(true);
連著先隱藏後立即顯示UIScrollView就木有問題了。 2016年7月18日補充: 對於剛初始化或顯示出來的UI物件不管是子節點中,不管是NGUI的UIScrollView子節點重新整理,還是UGUI中的ScrollRect節點下的重新整理也好,剛剛初始化萬元件立即去做別的事情常常容易出現異常,
除了上面的解決辦法外,還可以嘗試做一些延遲,比如在下一幀。或當前幀重新整理的結尾,即可以用到協程啦!
<pre name="code" class="csharp">using UnityEngine;
using System.Collections;

public class DelayDealDemo : MonoBehaviour
{

    // Use this for initialization
    void Start()
    {
        //先初始化資源

        //延遲重新整理
        StartCoroutine(DelayDeal());
    }

    private IEnumerator DelayDeal()
    {
        yield return new WaitForEndOfFrame();

        //TODO延遲後操作
    }
}
    (3).利用UIGrid.sort=true,子節點依次按字典序命名達到自動排序的效果。注意:這種方法不提倡!非常不穩定!如一堆節點按1,2,3,4...命名。很容易出現最終亂序的結果;     (4).直接改變子節點的localPosition。需要注意:這時各個子節點必須同名,且grid.sorted=false.最好不要呼叫grid.Respositin(),scrollView.ResetPosition()這種低效又不穩定的函式,子節點一多,很容易就測出來這些函式比直接修改localPosition慢啊!     (5).想要使UIGrid達到預定的排序效果,item數字前補充"0",001,002,003...這樣下來