UnityEvent에 대해 읽었으며 구현하려고합니다.프리 프레임에서 UnityEvent에 리스너를 프로그램 방식으로 추가하는 방법
GameObject "ScriptsHolder"에 첨부 된 "GameController.cs"스크립트와 "target"이라는 Prefab GameObject에 첨부 된 "target.cs"스크립트가 있습니다.
"대상"시작에 현장에없는 : I가 "target0", "이 target1을", 이름이 변경되어 특정 지점에서 여러 대상을 시작 ...
대상이 피해를받는
, I GameController.cs에 이름을 보내려고합니다. GameController.cs에는 해당 객체를 파괴하는 void가 있습니다. 가 여기에 내가했던 일이야 :target.cs :
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();
}
}
다음, 내 목표 조립식에와 관리자의 클릭, 나는 손상 이벤트에 "ScriptsHolder"를 추가하려고합니다. 여기 내 문제가있다 : 나는 ScriptsHolder를 Damage Event에 놓을 수 없다. 일부 테스트와 그 이유는 "목표"가 아직 내 장면에 없다는 사실 인 것 같습니다.
그래서 리스너를 추가하는 방법에 대해 읽었지 만이를 수행하는 방법을 알 수는 없습니다. "GameController.cs"에서 여기에 내가 무엇을
:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class GameController : MonoBehaviour {
UnityEvent damageEvent;
void Awake()
{
damageEvent.AddListener(targetReceivedDamage);
}
void targetReceivedDamage()
{ // do some stuff }
}
하지만 그건 작동하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까? 또는 "대상"이 장면 안에 있지 않더라도 어떻게 ScriptsHolder를 손상 이벤트에 추가 할 수 있습니까?
도움을 주시면 감사하겠습니다.
감사합니다 도움이되지만 작동 할 수 없습니다 ... 그것은 말한다 :' "UnityEngine.GameObject는 포함되어 있지 않습니다 damageEvent "에 대한 정의" – binoculars
Prefab을 Target으로 선언해야합니다. 또는 인스턴스화 된 객체에서 구성 요소를 가져와야합니다. –