2016-11-18 4 views
0

Unityでは、実行時に、無効になったときに親オブジェクトから子オブジェクトを切り離しています。コンソールにエラーが記録されています "GameObjectは既に有効化または無効化されています"。unity3d GameObjectはすでに有効化または無効化されています

明らかに、これは、同じフレーム内の親を変更して、その子を非アクティブにするためです。これは、階層内で子が正常に切り離されていることがわかっていても発生します。だから、私の言うことから、すべてがうまくいった。

これはちょうど偽のエラーであるかどうかは知っていますか、実際に気にする必要があるのでしょうか?

+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

Eシーンは、ちょうど球をクリックして、結果は球が消えていることで、キューブはオンのままで、もはや、すべてのエラーが生成されていない子である:

enter image description here

私はあなたには、いくつかの同期を持っていると信じていくつかの奇妙な方法で2つのコマンドを実行すると、obj.SetActive(false);を2回続けて呼び出すことになります。

関連する問題