Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用1个脚本根据标记-C#-Unity分配不同的值_C#_Unity3d - Fatal编程技术网

使用1个脚本根据标记-C#-Unity分配不同的值

使用1个脚本根据标记-C#-Unity分配不同的值,c#,unity3d,C#,Unity3d,我正在Unity 3D上做一个游戏。我有一个脚本,我在2个不同的字符上使用(预制) 我有一个变量叫Target public Transform Target; 这个剧本是传给Hero和vilain的。我想让剧本把英雄作为反派的目标,把反派作为英雄的目标。也许我可以用标签来做 非常感谢您的帮助。您可以这样做 if(Target.tag == "Hero"){ //hero Detected } 或 假设您有一个脚本,附加到这两个脚本(英雄和恶棍) 所以我找到了解决办法,非常简单,但花了我一整

我正在Unity 3D上做一个游戏。我有一个脚本,我在2个不同的字符上使用(预制)

我有一个变量叫Target

public Transform Target;
这个剧本是传给Hero和vilain的。我想让剧本把英雄作为反派的目标,把反派作为英雄的目标。也许我可以用标签来做


非常感谢您的帮助。

您可以这样做

if(Target.tag == "Hero"){
//hero Detected
}

假设您有一个脚本,附加到这两个脚本(英雄和恶棍)


所以我找到了解决办法,非常简单,但花了我一整天的时间才弄明白lol

GameObject[] protagonistOpponent = GameObject.FindGameObjectsWithTag("Player");
        foreach (GameObject obst in protagonistOpponent)
            obst.GetComponent<User_Stats>().Target = FKManage.Enemy.transform;

        GameObject[] AntagonistOpponent = GameObject.FindGameObjectsWithTag("Enemy");
        foreach (GameObject obst in AntagonistOpponent)
            obst.GetComponent<User_Stats>().Target = FKManage.LocalPlayer.transform;
GameObject[]progationoppost=GameObject.FindGameObjectsWithTag(“玩家”);
foreach(主角对手中的游戏对象obst)
obst.GetComponent().Target=fkmanager.敌军.transform;
GameObject[]敌对对手=GameObject.FindGameObjectsWithTag(“敌人”);
foreach(对手中的游戏对象obst)
obst.GetComponent().Target=fkmanager.LocalPlayer.transform;

感谢所有试图帮助我的人:)

这不就是将目标转换拖放到属性窗口脚本中的变量“target”上吗?是的,如果我将其设置为公共,我可以拖放,但假设我有5个不同的角色用于英雄,5个角色用于恶棍。现在我想随机调用一个英雄和一个恶棍[我已经成功完成了这么多],我想要的是所有恶棍都有敌人的标签,英雄都有玩家的标签,并自动选择对方的可视预制场。这样做可以吗?嗨,我已经看了这一页,但这没有帮助。这是我尝试过的两种方法,但在两个代码之后,相同的值被分配给两个不同标记的预制。GameObject PlayerTargets=GameObject.FindGameObjectWithTag(“玩家”);PlayerTargets=fk管理敌人;Target=PlayerTargets.transform;2如果(GameObject.FindGameObjectWithTag(“Player”){this.Target=fkmanager.敌方.transform;}如果(GameObject.FindGameObjectWithTag(“敌方”){this.Target=fkmanager.LocalPlayer.transform}我想做的是,我想要的逻辑是针对所有使用TAG PLAYERS SET TARGET=敌军的游戏对象,针对所有使用TAG ENEMEY SET TARGET=PLAYER的游戏对象,使用1 c#scriptHi,感谢您的支持。我试过了,但不幸的是脚本检查了反派的标签并更改了两者的target值,然后它下降并再次更改了两者的值。然而,我在“回答你的问题”中找到了另一种上传方式,供大家查看。
 class xyz: MonoBehaviour{
    public Transform Target;
    void Start(){
         if(this.tag == "Villan"){
              //Villan Detected, assign hero
         }
         else if(this.tag == "Hero"){
             //Hero Detected, assign Villan
        }
   }
}
GameObject[] protagonistOpponent = GameObject.FindGameObjectsWithTag("Player");
        foreach (GameObject obst in protagonistOpponent)
            obst.GetComponent<User_Stats>().Target = FKManage.Enemy.transform;

        GameObject[] AntagonistOpponent = GameObject.FindGameObjectsWithTag("Enemy");
        foreach (GameObject obst in AntagonistOpponent)
            obst.GetComponent<User_Stats>().Target = FKManage.LocalPlayer.transform;