簡體   English   中英

我的腳本 (c#) 需要一些幫助,只需幾行代碼或對數學公式的解釋

[英]I need some help at my script (c#) with little lines of code or explanation for math formula

我很早就是一名游戲開發人員,我有一個關於數學公式的小問題(這對許多人來說似乎有點傻,我可能會犯初學者的錯誤)。

簡而言之,我想為游戲中的資源(例如我們找到硬幣,寶石,XP或其他)制作一個帶有小系統的小游戲,到目前為止我已經制作了一個處理收集此資源的腳本,一個它在游戲中顯示它收集了多少資源以及存儲兩個變量的資源管理器,即黃金資源和另一個“黑色”資源。 對我來說似乎有點復雜但我仍然沒有找到解決方案的部分是,下面應用的公式應該在資源管理器中使用 rest 收集關卡期間收集的資源,但我應用的公式會產生重復效果它不斷地聚集在其中。 我怎樣才能讓它聚集一次以贏得關卡? 你可以給我一個解釋和/或幾行代碼來解決我的小問題。

public CollectCubes collectCubes;
public ResurseManagerScript resurceManagerScript;
public GameObject levelCompleteUI;


// ===========================

void Update()
{
    if (levelCompleteUI.activeSelf)
    {
        resurceManagerScript.GoldenCubes = resurceManagerScript.GoldenCubes + collectCubes.cubes;

    }
}

現在我將解釋我對腳本的看法

我使用 if 語句檢查在結束時顯示的游戲對象是否處於活動狀態(levelCompleteUI)以從資源管理器獲取游戲資源的 integer(resurceManagerScript.GoldenCubes)並將其與收集的資源一起收集在關卡期間(collectCubes.cubes),因此公式來自 if 語句。

問題是沒有什么能阻止資源被多次添加。 Update每幀運行一次,因此在您贏得游戲后的每一幀都會添加到資源管理器中。 要解決此問題,您可以添加一個標志來指示已添加資源的天氣,並且僅在尚未添加時才添加它們。

bool haveAddedResources = false;

void Update()
{
    // Check if the level has been completed AND the resources haven't been counted yet
    if(levelCompleteUI.activeSelf && !haveAddedResources)
    {
        resurceManagerScript.GoldenCubes = resurceManagerScript.GoldenCubes + collectCubes.cubes;
        // Set haveAddedResources to true, ensuring this if statement can't run multiple times
        haveAddedResources = true;
    }
}

另一個提示:您可以使用a += b作為 a a = a + b的簡寫。 所以這行resurceManagerScript.GoldenCubes = resurceManagerScript.GoldenCubes + collectCubes.cubes; 可以簡化為resurceManagerScript.GoldenCubes += collectCubes.cubes;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM