2016-03-27 15 views
2

'daki güncelleştirme sırası Unity Manual, Komut Dosyası işlevlerinin çağrıldığı sırayı açıklar. Bununla birlikte, GameObjects'in kendilerinin Birlik içinde değerlendirildiği düzene ilişkin herhangi bir kural olup olmadığını merak ediyordum.GameObject Unity

GameObjects temel olarak Unity'nin sahne grafiğinin düğümleridir ve (sahnenin kendisinin kök düğüm olduğunu varsayarak) bir ağaç oluştururlar. Bu ağaç yapısının, GameObjects'in değerlendirildiği sıraya göre herhangi bir kural koyup koymadığını merak ediyordum.

Daha önce de belirtildiği gibi, elkitabı her zaman Update() ve benzeri olan ilk çağrıdan önce çağrılan 'un her zaman Start()'dan önce çağrıldığını açıklar. Bununla birlikte, bu ilişkiler zaman içinde (çoğunlukla) tek bir GameObject üzerinde tek bir senaryoda verilmektedir. Sahnede tüm GameObjects üzerinde Start() (veya başka herhangi bir yöntem) çağrıldığı düzeni belirten bir kural olup olmadığını bilmek istiyorum. Onların çocukları önce anne her zaman

  1. kabul Are:

    Özellikle bilmek istediğim?
  2. Kardeşler sahne düzeninde aynı sırada göz önünde bulunduruyor mu?
  3. Komut Dosyası Yürütme Sırası, yalnızca tek bir GameObject kapsamında mı yürütülür, yoksa tüm GameObjects'i dikkate alır mı?
+0

Size cevabınızı, birkaç nesne, betik ve çocuktan oluşan basit bir kurulumla kolayca alabileceğinizi söylemek istedim, sonra cevabınızı sorunun cevabını aldığınızı fark ettim. Şimdi benim sorum geliyor, çünkü bu oldukça kolay bir cevap ile önemsiz bir sorundur, neden soruyor? – Everts

+0

Yıllardır beni şaşırtmakta olan bir problem ve şimdi sonunda aşağı inip test ettim, SO üzerinde belgelenmiş bir cevap bulamadığım için paylaşmaya değer olabileceğini düşündüm. Eminim, daha önce birçok insanın baş ağrısına neden olduğundan, özellikle de sahnenin yeniden yüklenmesiyle siparişin değişebileceğinden eminim. "Dün gece kapattığımda çalıştı, neden bugün çalışmıyor?" –

+0

Demek istediğim, eğer A nesnesinin B nesnesinden önce gerçekleşmesi gerekiyorsa, bir ilişkiniz var demektir, böylece artık Unity güncelleme sistemine güvenemezsiniz ve A B'yi aramak zorundadır. Kendiniz söylediniz, yeniden yükleme siparişi değiştirebilir, Bir dahaki sefere yanlış olabileceğini bilerek, Birlik Güncellemesine güvenmeye devam ederseniz, bunun bir gün başarısız olacağını bilerek, bunu wruuuung yapıyorsunuz demektir. – Everts

cevap

3

Unity'de, her biri 3 betiğe sahip 3x3x3 bir GameObjects ağacından oluşan küçük bir test projesi oluşturdum.

aşağıdaki cevaplar bulundu: ebeveynleri olmadan önce onların çocuklarıdır önce bazı ebeveynler olarak kabul edilebilirken

  1. sayılı Bazı GameObjects, kabul edilebilir. Bu sıra, sahneyi yeniden yüklerken veya sahne grafiğini değiştirirken değişebilir.
  2. Hayır. Kardeşler herhangi bir sırada güncellenebilir. Bu sıra, sahneyi yeniden yüklerken veya sahne grafiğini değiştirirken değişebilir.
  3. Bu, olaydaki tüm GameObjects üzerinde zorlanır. SEO, B komut dosyasını B komutundan önce yürütecek şekilde ayarlarsa, B komutunun herhangi bir örneğinden önce tüm A komut dosyası örnekleri dikkate alınacaktır. Anlamı, A'nın tüm örnekleri, herhangi bir B'nin kendi Awake()'unu çağırmadan önce Awake()'u çağırır, daha sonra, A'nın tüm örnekleri, Start() çağrılarını çağırmadan önce tüm A örnekleri Start()'u arar.
+0

Bu da ilginizi çekebilir: http://docs.unity3d.com/Manual/class-ScriptExecution.html –