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

标签 c# unity3d integer

我想从 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/

相关文章:

c# - 桌面上的透明表格

c# - 以编程方式强制复制单个 Active Directory 对象

c# - 在 C# (Unity) 中使用静态临时变量有什么好处吗?

c# - 如何统一禁用物理系统

php - 我真的需要正则表达式来检查输入字段是否为整数吗?

c# - selenium webdriver 单击 javascript 链接

c# - 我可以使用什么 JavaScript 代码在新窗口中打开,而不是我之前打开的窗口

android - 无法签署 APK 包。 (统一 2017.2.0f3)

c - 一对 uint64 值的长乘法

ruby - 在 Ruby 中解压签名的小端