您的位置:首页 > 移动开发 > Unity3D

工作总结-C#抽象类,接口,以及UnityAction

2015-07-16 23:27 441 查看
C#的抽象类及接口设计蛮奇怪。先说抽象类,抽象类允许抽象方法,也允许不抽象的方法。

额外一提,当你使用子类去继承基类完成方法重写时,千万要记得用override来修饰你的方法声明,否则c#不会认为你在重写基类方法,至少目前看来是这样。

接口允许属性的存在但不允许字段的存在,字段及属性的区别至今也没有闹清楚,C#的基础还是太弱了。

另一方面,由于要设计一个运行于Unity的Http请求解析类(使用WWW类),所以要使用协程,在使用了协程以后由于返回类型被限制为IEnumerator,因此无法通过方法的返回值来返回响应参数,这时就用到了UnityAction来设计回调事件。

[code]public IEnumerator getRespones(UnityAction<string> callBack){
    // DoSomeThings&get Respones Object call res
    callBack(res.text);
} 

public void Start(){
    // 不要单纯的传入方法,应该构建一个UnityAction对象传入
    StartCoroutine(UnityAction<string> printRes(string res));
}

public void printRes(string res){
    Debug.Log(res);
}


关于额外的一些设计有关的东西,如果想要保持一个全局唯一的MonoBehavior,同时不用通过Find方法来get到这个MonoBehavior,目前的一个解决思路是首先确保全局只挂载了一个脚本,然后为这个MonoBehavior设置成单例模式。

[code]private static SingleMonoBehavior me;

public static SingleMonoBehavior getInstance(){
    if(me == null){
        // 没想好要怎么做,新建一个空物体并挂载该脚本么?总觉得不好,只能先打印了
        Debug.Log("于是这里是空的");
   }
   return me;
}
public void Start(){
    me = this;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: