2016-11-18 681 views
0

在Unity中,在運行時,我禁用時將父對象從其父對象中分離出來。正在將錯誤記錄到控制檯「GameObject已被激活或停用」。unity3d遊戲對象已被激活或取消激活

顯然這是因爲我正在改變父母在相同的框架,孩子被停用。即使我在層次結構中看到孩子成功分離,也會發生這種情況。所以,從我的角度來看,一切運行良好。

那麼,有誰知道這是否只是一個虛假的錯誤,是否真的需要關心?

+0

你用'OnDisabled'函數做這個嗎? –

+1

我相信Telepathy目前在Unity中不起作用。那麼你想分享你使用的代碼嗎? –

+0

這聽起來很像 'obj.transform.parent = null;' 如果你這樣做了與'obj.SetActive(false)'相同的幀;'錯誤會記錄在 – magoo

回答

0

我相信你有一些奇怪的事情發生,因爲這樣的錯誤不會發生,在這裏你可以證明它。

把這個腳本:

using UnityEngine; 

public class SyncTest : MonoBehaviour { 

    private Transform cube; 

    void Start() { 
     cube = transform.GetChild(0); // No tests as I know it's there 
    } 

    private void OnMouseUpAsButton() 
    { 
     cube.parent = null; 
     gameObject.SetActive(false); 
    } 

} 

然後創建一個球體,把一個立方體作爲其子就像這樣:

The sphere and its child

然後腳本連接到球:

Script attached to the sphere

Run th e場景,只需單擊球體上,結果是球消失,立方體保持上不再是孩子,產生完全沒有錯誤:

enter image description here

我相信你有一定的同步問題,以某種奇怪的方式運行這兩個命令,很可能你連續兩次調用obj.SetActive(false);