将Interface当成Objc的Delegate使用

From 呼吸的草稿本

Jump to: navigation, search

自己琢磨出来的方法,后果自负。嘿嘿。

//定义Delegate
public interface ISelectableDelegate
{
     void OnClick(Selectable obj);
 
}
 
//调用
public class Selectable : MonoBehaviour {
    public ISelectableDelegate delegateObj;
    void OnMouseDown()
    {
        delegateObj.OnClick(this);
    }
}
 
//响应
public class TurretManage : MonoBehaviour,ISelectableDelegate {
    public void OnClick(Selectable obj)
    {
        //Debug.Log(obj.ID);
        int index =-1;
        int cnt = 0;
        foreach (Selectable item in turretInterface)
	    {
		 if(item == obj){
             index = cnt;
             break;
             }
         cnt += 1;        
 
	    }
        if (!isPlacingTurret && index != -1)
            StartPlaceTurret(turretPerfabs[index]);
    }
}
Personal tools