NGUI動畫/UI解決重新整理顯示錯誤的問題
阿新 • • 發佈:2019-02-14
2.Animation動畫製作一個按圓圈軌跡移動的動畫:
預設顯示DopeSheet視窗,修改節點的屬性,選擇Curves可以看動畫曲線,我是編輯完才發現,有規律的動畫,這個曲線也是有一定規律的。直接用曲線編輯可能更加方便。修改Position屬性,.x曲線是餘弦曲線,Y是正旋弦曲線。Z軸保持0值不變,當然如果繞空間旋轉,可能Z也要跟著改變。
編輯的結果示意圖為餘弦曲線,畫的太醜了:
3. 不確定是Unity還是NGUI的關係。總會遇到ScrollView下的子介面排序(重新定位)。 (1)在剛開啟介面(Set.Active(true))就立即排序很容易出現無效的情況。這個是Unity的一個重新整理問題,說多了都都是淚。如果出現了這樣的情況,最好active=true之後短暫延時(如0.01s)。這樣就不容易出現子節點指定位置不生效的情況了。 NGUI中實現一個子節點排序列表的ScrollView的幾種方法,如圖中結構:
(2)此外,如果出現頻繁執行UIScrollView.Resetpotiion()發現各種顯示異常,對!僅僅是顯示異常,物件座標引數什麼的全都OK的情況下,只要後面多加兩行: UIScrollView.SetActive(false);
UIScrollView.SetActive(true);
連著先隱藏後立即顯示UIScrollView就木有問題了。 2016年7月18日補充: 對於剛初始化或顯示出來的UI物件不管是子節點中,不管是NGUI的UIScrollView子節點重新整理,還是UGUI中的ScrollRect節點下的重新整理也好,剛剛初始化萬元件立即去做別的事情常常容易出現異常, 除了上面的解決辦法外,還可以嘗試做一些延遲,比如在下一幀。或當前幀重新整理的結尾,即可以用到協程啦!
3. 不確定是Unity還是NGUI的關係。總會遇到ScrollView下的子介面排序(重新定位)。 (1)在剛開啟介面(Set.Active(true))就立即排序很容易出現無效的情況。這個是Unity的一個重新整理問題,說多了都都是淚。如果出現了這樣的情況,最好active=true之後短暫延時(如0.01s)。這樣就不容易出現子節點指定位置不生效的情況了。 NGUI中實現一個子節點排序列表的ScrollView的幾種方法,如圖中結構:
(2)此外,如果出現頻繁執行UIScrollView.Resetpotiion()發現各種顯示異常,對!僅僅是顯示異常,物件座標引數什麼的全都OK的情況下,只要後面多加兩行: UIScrollView.SetActive(false);
UIScrollView.SetActive(true);
連著先隱藏後立即顯示UIScrollView就木有問題了。 2016年7月18日補充: 對於剛初始化或顯示出來的UI物件不管是子節點中,不管是NGUI的UIScrollView子節點重新整理,還是UGUI中的ScrollRect節點下的重新整理也好,剛剛初始化萬元件立即去做別的事情常常容易出現異常,
(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...這樣下來<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延遲後操作 } }