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