团结/克隆的敌人不能按预期工作/ C#

时间:2018-05-24 18:22:20

标签: c# unity3d

我有一个地形,我放置了两个敌人和一架飞机,我已经给了一个脚本来连续产生敌人(基本上没有塔的波浪防御)

我放置的两个敌人按预期工作,杀死他们会给予经验并与他们接触会让玩家感到健康。

但是我的脚本飞机产生的那些不会给予杀戮的经验,他们在接触时造成健康损害的唯一原因是因为我设置了碰撞以寻找" Enemy&#34的标签;他们有。

# THE SCRIPT FOR THE ENEMY-SPAWNING PLANE

IEnumerator Spawner()
{
    yield return new WaitForSeconds(startWait);

    while(!stop)
    {
        randEnemy = Random.Range(0, 2);
        Vector3 spawnPosition = new Vector3(Random.Range(-spawnValues.x, spawnValues.x), 2, Random.Range(-spawnValues.z, spawnValues.z));

        Instantiate(enemies[randEnemy], spawnPosition + transform.TransformPoint(0, 0, 0), gameObject.transform.rotation);

        yield return new WaitForSeconds(spawnWait);
    }
}
# THE SCRIPT WHICH CALLS FOR EXPERIENCE TO BE GIVEN (Enemy as GameObject)

void Dead()
{
    _characterXP.GainExp(120);
    Destroy(gameObject);
}
# THE SCRIPT WHICH GIVES THE PLAYER EXPERIENCE (CharacterXP as GameObject)

public void GainExp(float expThatWasGained)
{
    CurrentExp += expThatWasGained;
}

我还是Unity和C#的新手,所以如果还有其他需要我可以提供它,我已检查所有相关对象以确保相关内容正确连接,如果他们没有工作然后它会影响原始的敌人,问题仅在于那些被命名为ENEMY(Clone)的衍生敌人

修改

The Prefab 预制^

<小时/> The Pre-Spawned Enemy Mid-Game 预生成的敌人中期游戏^ The Clone Enemy Mid-Game Clone Enemy Mid-Game ^

2 个答案:

答案 0 :(得分:1)

您无法将场景对象分配给预制属性字段。您只能将其他预制件(或资产)分配到预制件属性插槽中。 要将场景对象分配给敌人脚本,您需要在运行时找到它。

在敌人的Start方法中,找到fpscontroller

void Start()
{
    _characterXP = GameObject.FindObjectOfType<FPSController>();
}

我认为这将解决您的问题

答案 1 :(得分:0)

enter image description here

这不是最明智的做法,但我的时间安排很紧,方法很有效。

我在可玩区域外创建了两个监狱,并将每个敌人中的一个放入其中,然后在我的Monster Spawner(飞机)中引用这两个被困人员而不是预制件,现在我获得了正确数量的exp每次杀人。