akxltmzk
9/17/2019 - 2:07 AM

deletage

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Test : MonoBehaviour{
  
  // delegate 선언(여러 함수를 등록하고 한번에 호출시켜 버림)
  public delegate void ChainFunction(int value);
  ChainFunction chain;
  
  int power;
  int defence;
  
  public void SetPower(int value){
    power += value;
  }
  
  public void SetDefence(int value){
    defence += value;
  }
  
  void Start(){
    chain += SetPower; // 함수추가
    chain += SetDefence; 
    
    chain(5);
    
     chain -= SetPower; // 함수 빼기
    
  }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class event1 : MonoBehaviour{
  
  public delegate void ChainFunction(int value);
  public static event ChainFunction OnStart; // static으로 선언했기 때문에 다른 스크립트에서 여기에 함수를 등록시킬 수 있다.
  
  int power;
  int defence;
  
  public void SetPower(int value){
    power += value;
  }
  
  public void SetDefence(int value){
    defence += value;
  }
  
  void Start(){
    OnStart += SetPower; // 함수추가
    OnStart += SetDefence; 
  }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class event2 : MonoBehaviour{
  void Start(){
    // static으로 event를 선언했기 때문에 그냥 함수등록 가능 
    event1.OnStart += Abc;
  }  
  
  public void Abc(int value)
  {
    print("함수를 등록했습니다");
  }

}