繁体   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