gpt4 book ai didi

c# - 从另一个脚本更改 Int

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:22 25 4
gpt4 key购买 nike

我想从 HarmEnemiesScript 更改 playerCurScore 整数(在 ScoreManager 脚本中)。

(脚本附加到场景中的对象)

using UnityEngine;
using System.Collections;

public class ScoreManager : MonoBehaviour
{
public int playerScore;
public int playerCurScore;

public void Start()
{
playerScore = 0;
playerCurScore = 0;
}

public void Update()
{
playerCurScore = playerScore;
}
}

(附在敌人身上的脚本)

using UnityEngine;
using System.Collections;

public class HarmEnemies : MonoBehaviour
{
public float enemyHealth;
public float enemyCurHealth;
public float playerDamage;

public void Start()
{
enemyCurHealth = enemyHealth;
}

public void OnTriggerEnter(Collider theCollision)
{
if(theCollision.tag == "Fireball")
{
enemyCurHealth = enemyCurHealth - playerDamage;
Destroy (theCollision);
}
if(enemyCurHealth <= 0)
{
Destroy (this.gameObject);
}
}
}

那么我该如何更改 HarmEnemies 中的 playerCurScore Int。我知道我必须使用 GetComponent,我可以使用 playerCurScore++;

最佳答案

你犯了几个错误。最主要的是 ScoreManager 脚本不应附加到 EnemyGameObject

制作一个单独的游戏对象并将其命名为ScoreManager。然后在场景中找到它并更新分数。

 ScoreManager s = GameObject.Find("ScoreManager");
s.SendMessage("incrementScore", amount);

在 ScoreManager 类中你需要这个:

 private static int score;

public void incrementScore(int amount)
{
score += amount;
}

如果您很聪明,您可以将整个 ScoreManager 类设为静态,然后它甚至不必是 MonoBehaviour

你可以这样调用它:

 ScoreManager.incrementScore(amount);

关于static classes的信息.

关于c# - 从另一个脚本更改 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27939220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com