2016-12-30 62 views
0

我創建一個2D遊戲與團結我發現Android上的問題。每當我觸摸屏幕時,我都會有一個跳球,在編輯器中它可以很好地工作,但是在有些時候我會「重新加載」(再次加載關卡)時,在Android上球似乎無法識別近距離觸摸,並且遊戲變得無法播放。當我關閉遊戲(從最近的應用程序中刪除它)並重新打開遊戲時,它會再次完美運行。我一直在場景中有大約30個gameobjects,但問題是爲什麼在重新加載之後這個問題更加明顯?當我重新加載的水平不應該被重置?觸摸檢測一些水平後重新加載

我檢測觸摸拿到球與跳躍:

if (Input.GetMouseButtonDown (0) || Input.GetKeyDown("space")) { 
     gameObject.GetComponent<Rigidbody2D>().constraints &= ~RigidbodyConstraints2D.FreezePositionY; 
     gameObject.GetComponent<Rigidbody2D>().constraints = RigidbodyConstraints2D.FreezePositionX; 
     gameObject.GetComponent<Rigidbody2D>().velocity=Vector.up*speed; 
     gameObject.GetComponent<AudioSource>().Play(); 
     gameObject.GetComponent<Rigidbody2D>().isKinematic=false; 

    } 

此代碼是在更新(),在遊戲中,在那裏我已經很多東西,在更新的主腳本(),但大多數是在玩家輸球的時候進行的。 腳本附加到遊戲物體也具有 -sprite渲染 -rigidbody2d -polygoncollider2D -audiosource

+1

請發表您的觸摸描述和信息上的腳本是在代碼中,什麼樣的對象是連接 –

回答

2

聞起來像一些內存泄漏給我。 沒有源代碼示例它只是猜測,但我會檢查事件訂閱(EventX + = HandlerY)。也許有可能多次註冊一些事件,而沒有清理未使用訂閱的機制。

又見Find memory leaks in Unity

+0

對不起,我是新來的團結,我不很懂以及你在說什麼 – rickyxd

+0

我想說的是: 我想每次重新加載都會做一些事情,應該只做一次。 因此,在下一次重新加載時,不應該再次完成,或者您首先需要「重置」某些內容。 –

+0

我已經在Start()中檢查過,並且我注意到每次場景開始時我都會要求我的橫幅,也許這是問題所在? – rickyxd