工作总结-C#抽象类,接口,以及UnityAction
2015-07-16 23:27
441 查看
C#的抽象类及接口设计蛮奇怪。先说抽象类,抽象类允许抽象方法,也允许不抽象的方法。
额外一提,当你使用子类去继承基类完成方法重写时,千万要记得用override来修饰你的方法声明,否则c#不会认为你在重写基类方法,至少目前看来是这样。
接口允许属性的存在但不允许字段的存在,字段及属性的区别至今也没有闹清楚,C#的基础还是太弱了。
另一方面,由于要设计一个运行于Unity的Http请求解析类(使用WWW类),所以要使用协程,在使用了协程以后由于返回类型被限制为IEnumerator,因此无法通过方法的返回值来返回响应参数,这时就用到了UnityAction来设计回调事件。
关于额外的一些设计有关的东西,如果想要保持一个全局唯一的MonoBehavior,同时不用通过Find方法来get到这个MonoBehavior,目前的一个解决思路是首先确保全局只挂载了一个脚本,然后为这个MonoBehavior设置成单例模式。
额外一提,当你使用子类去继承基类完成方法重写时,千万要记得用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; }
相关文章推荐
- 在Inspector 中 设置添加回调函数 - Unity3d编辑器扩展
- 使用Unity3D的50个技巧:Unity3D最佳实践
- 在Unity中使用Lua脚本:语言层和游戏逻辑粘合层处理
- Unity3d-Camera
- (2)unity入门,登陆页面GUI,上
- unity3d5.0 SurvivalShooter(二) 动画状态机的添加
- unity3d 5.0 SurvivalShooter(一) 角色移动
- 将texturepacker生成的png和xml资源反向生成小图供unity使用
- Unity3D研究院transform.parent = parent坐标就乱了
- 自己写的UnitY实用小工具或脚本——文本管理器
- Unity3D研究院之通过C#使用Advanced CSharp Messenger(五十)
- Unity 接入ShareSDK Android&iOS 微信分享
- Unity 天空盒SkyBxo
- 孙陪你,了解它的权力--Kinect结合的发展Unity3D游戏应用开发
- 在unity中点击三维物体,显示它的名字
- Unity3D如何集成ShareSDK
- Unity为物体添加物理碰撞效果
- unity3d 4.X音频格式
- unity3D的FingerGestures插件
- 深入理解IOC模式及Unity框架