C# 如何以编程方式将侦听器添加到预制中的UnityEvent
我读到了UnityEvent,并试图实现它 我有一个“GameController.cs”脚本,连接到一个游戏对象“ScriptsHolder”,还有一个“target.cs”脚本,连接到一个名为“target”的预制游戏对象 启动时,“目标”不在场景中:我在某个点启动多个目标,这些目标被重命名为“target0”、“target1” 当目标受到伤害时,我希望它将自己的名字发送到GameController.cs,它有一个空洞可以摧毁该对象。 以下是我所做的: target.cs:C# 如何以编程方式将侦听器添加到预制中的UnityEvent,c#,events,unity3d,C#,Events,Unity3d,我读到了UnityEvent,并试图实现它 我有一个“GameController.cs”脚本,连接到一个游戏对象“ScriptsHolder”,还有一个“target.cs”脚本,连接到一个名为“target”的预制游戏对象 启动时,“目标”不在场景中:我在某个点启动多个目标,这些目标被重命名为“target0”、“target1” 当目标受到伤害时,我希望它将自己的名字发送到GameController.cs,它有一个空洞可以摧毁该对象。 以下是我所做的: target.cs: using
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class target : MonoBehaviour {
public UnityEvent damageEvent;
void Damage(float damage)
{
damageEvent.Invoke();
}
}
接下来,我点击我的目标预置,在inspector中,我尝试将“ScriptsHolder”添加到伤害事件中。这是我的问题:我不能在破坏事件中放弃ScriptsHolder。做了一些测试,原因似乎是“目标”还没有出现在我的场景中
所以我读到了关于添加一个侦听器的内容,但我不知道该怎么做
下面是我在“GameController.cs”中看到的内容:
但这不起作用。我做错了什么?或者,即使“目标”不在场景中,我如何将ScriptsHolder添加到伤害事件中
非常感谢您的帮助 实例化目标对象时,需要添加侦听器。例如: 将预置声明更改为目标类型,并在inspector中重新指定目标预置
public Target targetPrefab;
然后
希望这有帮助:)在实例化目标对象时,需要添加侦听器。例如: 将预置声明更改为目标类型,并在inspector中重新指定目标预置
public Target targetPrefab;
然后
希望这有帮助:)谢谢你的回复,但无法让它工作。。。它说:
“UnityEngine.GameObject不包含damageEvent的定义”
您必须将预置声明为目标。或者您必须从实例化对象获取组件。感谢您的回复,但无法使其工作。。。它说:“UnityEngine.GameObject不包含damageEvent的定义”
您必须将预置声明为目标。或者您必须从实例化的对象获取组件。
Target target = Instantiate(targetPrefab);
target.damageEvent.AddListener(targetReceivedDamage);