簡體   English   中英

在Unity3d(NGUI)中將預制件與面板之間的父級化

[英]Reparenting prefabs between to panels in Unity3d (NGUI)

不確定這是Unity3d / NGUI問題的最佳論壇,但請嘗試一下...

我試圖通過重設它來將游戲對象從可滾動面板移動到普通面板。

firstGameObject.transform.parent = secondGameObject.transform;

firstGameObject最初是剪輯的可滾動面板的子級。 轉換似乎在層次結構中移動得很好,並且不再變得可滾動。 但是它仍然像被剪切面板的孩子一樣被剪切。

有任何想法嗎?

編輯:NGUI論壇上的某人建議在兩個uipanel上都調用Refresh(),但沒有效果。 http://www.tasharen.com/forum/index.php?topic=1941.0

終於成功了。 正確的方法是在重新設定父級后,在舊面板的每個小部件上調用CheckParent()。

UIPanel smallPanel = NGUITools.FindInParents<UIPanel>(firstGameObject);
List<UIWidget> list = new List<UIWidget>(smallPanel.widgets.buffer);

foreach (UIWidget widget in list)
{
    if (widget != null)
    {
        widget.CheckParent();
    }
}

函數CheckParent()已過時。 現在,您可以在父級UIWidget上使用ParentHasChanged()

這取決於您使用的滾動條。 設置新的父對象為預制件,您只需為其設置新的本地坐標系。 您說此滾動條中的對象正在剪切。 因此,必須有一個數組或列表或類似的東西,存儲您的預制件並在預制件上執行一些操作。 或者,有某種遮罩,可將所有對象隱藏在特定區域中(我認為這是您的情況)。 在這種情況下,您應該將預制件移出遮罩區域。 如果您不需要更改屏幕位置,則只需更改Z坐標,因此預制件將更靠近相機且不在遮罩區域內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM