我的脚本 (c#) 需要一些帮助,只需几行代码或对数学公式的解释
I need some help at my script (c#) with little lines of code or explanation for math formula
我是一名早期的游戏开发者,我有一个关于数学公式的小问题(对很多人来说这似乎有点愚蠢,我可能犯了初学者的错误)。
简而言之,我想为游戏中的资源(例如我们找到硬币、宝石、XP 或其他)制作一个带有小系统的小游戏,到目前为止我已经制作了一个脚本来处理收集此资源,一个在游戏中显示它收集了多少资源,一个资源管理器存储了两个变量,即黄金资源和另一个“黑色”资源。对我来说有点复杂但我仍然没有找到解决方案的部分是,下面应用的公式应该收集关卡中收集的资源以及资源管理器中的其余资源,但我应用的公式会产生重复效果它不断聚集在其中。我怎样才能让它收集一次才能赢得关卡?你可以给我一个解释和/或一些代码行来解决我的小问题。
public CollectCubes collectCubes;
public ResurseManagerScript resurceManagerScript;
public GameObject levelCompleteUI;
// ===========================
void Update()
{
if (levelCompleteUI.activeSelf)
{
resurceManagerScript.GoldenCubes = resurceManagerScript.GoldenCubes + collectCubes.cubes;
}
}
现在我将解释我对脚本的看法
我使用了 if 语句来检查在你获胜的结尾处显示的游戏对象是否处于活动状态 (levelCompleteUI),以便从资源管理器中获取游戏资源的整数 (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 + b
的 shorthand。所以行 resurceManagerScript.GoldenCubes = resurceManagerScript.GoldenCubes + collectCubes.cubes;
可以简化为 resurceManagerScript.GoldenCubes += collectCubes.cubes;
我是一名早期的游戏开发者,我有一个关于数学公式的小问题(对很多人来说这似乎有点愚蠢,我可能犯了初学者的错误)。
简而言之,我想为游戏中的资源(例如我们找到硬币、宝石、XP 或其他)制作一个带有小系统的小游戏,到目前为止我已经制作了一个脚本来处理收集此资源,一个在游戏中显示它收集了多少资源,一个资源管理器存储了两个变量,即黄金资源和另一个“黑色”资源。对我来说有点复杂但我仍然没有找到解决方案的部分是,下面应用的公式应该收集关卡中收集的资源以及资源管理器中的其余资源,但我应用的公式会产生重复效果它不断聚集在其中。我怎样才能让它收集一次才能赢得关卡?你可以给我一个解释和/或一些代码行来解决我的小问题。
public CollectCubes collectCubes;
public ResurseManagerScript resurceManagerScript;
public GameObject levelCompleteUI;
// ===========================
void Update()
{
if (levelCompleteUI.activeSelf)
{
resurceManagerScript.GoldenCubes = resurceManagerScript.GoldenCubes + collectCubes.cubes;
}
}
现在我将解释我对脚本的看法
我使用了 if 语句来检查在你获胜的结尾处显示的游戏对象是否处于活动状态 (levelCompleteUI),以便从资源管理器中获取游戏资源的整数 (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 + b
的 shorthand。所以行 resurceManagerScript.GoldenCubes = resurceManagerScript.GoldenCubes + collectCubes.cubes;
可以简化为 resurceManagerScript.GoldenCubes += collectCubes.cubes;