我正在嘗試制作一本書,如果用戶按下除了所選頁面之外的SetActive(false)所有頁面。GameObjectGameObject
public GameObject[] bookPages;
int currentPage;
public void whatPage ( )
{
int pages = 0;
while ( pages < bookPages.Length )
{
if ( pages == currentPage )
{
Debug.Log ( "CURRENT PAGE" currentPage );
bookPages [ currentPage ].SetActive ( true );
pages ;
continue;
}
bookPages [ pages ].SetActive ( false );
Debug.Log ( pages );
pages ;
}
}
public void pageFlu ( )
{
currentPage = 1;
whatPage ( );
bookPages [ currentPage ].SetActive ( true );
}
我試過這個continue方法。
uj5u.com熱心網友回復:
解決此問題的更好方法是跟蹤最后一個活動頁面并在選擇任何其他頁面時將其停用。那會快很多。
您還可以撰寫一個函式,將所選頁面作為引數,停用當前頁面,將當前頁面分配給所選頁面引數并激活所選頁面。是這樣的:
public GameObject[] bookPages;
int currentPage;
public void DeactivateAllPages()
{
foreach (GameObject page in bookPages)
{
page.SetActive(false);
}
}
public void SelectPage(int pageIndex)
{
bookPages[currangePage].SetActive(false);
currangePage = pageIndex;
bookPages[currangePage].SetActive(true);
}
uj5u.com熱心網友回復:
我發現您的原始代碼中存在拼寫錯誤。你有currentPage 而不是currentPage. 那肯定會導致 Unity 停止執行該方法。您會在控制臺日志中看到一條紅色的例外訊息。
但是為了使代碼更簡單,您可以這樣處理它:
public GameObject[] bookPages;
int currentPage;
public void whatPage ( )
{
for ( int i = 0; i < bookPages.Length; i )
// also handles a bad 'currentPage' value by setting all to inactive.
bookPages [ i ].SetActive ( i == currentPage );
}
public void pageFlu ( )
{
currentPage = 1;
whatPage ( );
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/534996.html
標籤:C#unity3d
上一篇:檢查活動子物件的子計數
