C# 多人游戏中盗取敌人点数
我有一个“玩家”C# 多人游戏中盗取敌人点数,c#,unity3d,multiplayer,unity5,C#,Unity3d,Multiplayer,Unity5,我有一个“玩家”gameObject,它在serverinitialized()上生成。 当GetComponent().isMine时,标签“敌人”变为“玩家” 我想做一些像: void OnTriggerEnter (Collider Enemy){ if (ScoreManager.score > Enemy.Score) { ScoreManager.score = ScoreManager.score + Enemy.Score; }
gameObject
,它在serverinitialized()上生成。
当GetComponent().isMine
时,标签“敌人”变为“玩家”
我想做一些像:
void OnTriggerEnter (Collider Enemy){
if (ScoreManager.score > Enemy.Score) {
ScoreManager.score = ScoreManager.score + Enemy.Score;
}
else if (ScoreManager.score < Enemy.Score) {
Destroy (gameObject);
}
}
void ontriggenter(对撞机敌人){
如果(ScoreManager.score>敌方.score){
ScoreManager.score=ScoreManager.score+敌人.score;
}
否则如果(ScoreManager.score<敌方.score){
摧毁(游戏对象);
}
}
但我不知道如何获得敌人玩家的点数
我的ScoreManager脚本:
public static int score;
Text text;
void Awake () {
text = GetComponent <Text> ();
score = 0;
}
void Update () {
text.text = "Score: " + score;
}
}
publicstaticint分数;
文本;
无效唤醒(){
text=GetComponent();
得分=0;
}
无效更新(){
text.text=“分数:”+分数;
}
}
当您使用GetComponent时,它被附加到GUI文本gameObject
名为ScoreText
1)始终检查空值
2) 不要使用GetComponent。通过在文本上方添加[System.Serializable]
来序列化变量(或使其公开)代码>并在inspector(文本组件)中拖放
3) 您不必每帧刷新分数,只需在分数更改时刷新。这应该使用事件来完成
为了访问敌人的点,你可以使用,并使用“敌人”,只要敌人有这个标签。您可以通过这种方式获得对敌人游戏对象的引用。然后访问它的score组件
例如:
ScoreManager enemyScoreManager = null;
GameObject enemyReference = GameObject.FindWithTag("Enemy");
if (enemyReference !=null)
enemyScoreManager = enemyReference.GetComponent<ScoreManager>();
if (enemyScoreManager != null)
{
enemyScoreManager.score -=5; //steal 5 points
myScore.score +=5; //assuming myScore is a reference to your score manager
}
else
Debug.LogError("Enemy not found");
ScoreManager-enemyScoreManager=null;
GameObject enemyReference=GameObject.FindWithTag(“敌人”);
if(enemyReference!=null)
EnemyCoreManager=enemyReference.GetComponent();
如果(enemyScoreManager!=null)
{
enemyScoreManager.score-=5;//盗取5分
myScore.score+=5;//假设myScore是对分数管理器的引用
}
其他的
Debug.LogError(“未找到敌人”);
1)当您使用GetComponent时,请始终检查null
2) 不要使用GetComponent。通过在文本上方添加[System.Serializable]
来序列化变量(或使其公开)代码>并在inspector(文本组件)中拖放
3) 您不必每帧刷新分数,只需在分数更改时刷新。这应该使用事件来完成
为了访问敌人的点,你可以使用,并使用“敌人”,只要敌人有这个标签。您可以通过这种方式获得对敌人游戏对象的引用。然后访问它的score组件
例如:
ScoreManager enemyScoreManager = null;
GameObject enemyReference = GameObject.FindWithTag("Enemy");
if (enemyReference !=null)
enemyScoreManager = enemyReference.GetComponent<ScoreManager>();
if (enemyScoreManager != null)
{
enemyScoreManager.score -=5; //steal 5 points
myScore.score +=5; //assuming myScore is a reference to your score manager
}
else
Debug.LogError("Enemy not found");
ScoreManager-enemyScoreManager=null;
GameObject enemyReference=GameObject.FindWithTag(“敌人”);
if(enemyReference!=null)
EnemyCoreManager=enemyReference.GetComponent();
如果(enemyScoreManager!=null)
{
enemyScoreManager.score-=5;//盗取5分
myScore.score+=5;//假设myScore是对分数管理器的引用
}
其他的
Debug.LogError(“未找到敌人”);