泰斗破环神学习笔记——主界面开发
主界面主要就是,角色状态面板、角色信息面板、金币与钻石数额面板
前言
三大面板在 Sence面板中 的开发,其实没有太大的难度,说白了也不过是,Button、Image、Text,三种UI元素拼凑而成。至于代码部分唯一算有知识点的就是,委托与事件
一、委托(delegate)
委托就是把方法当参数,也可以是方法的参数!
- 委托的简单使用(C#自带的两种委托)
- Func委托
- Action委托
这里对以上两种委托不进行,过多的诉述,因为主界面开发用到的是 自定义委托。
委托是一种类,类是数据类型,所以委托也是一种数据类型
自定义委托的声明:
public delegate 数据类型 委托名 有无参数都可;
示例:
public delegate void Name;
public delegate Double Student;
二、事件(Event)
- 事件 就是使对象或类具备 通知能力 的成员
- 事件 是一种使对象或类能够提供通知的成员
- “ 对象 O 拥有一个 事件E ”,想表达的思想是:当 事件E 发生的时候,对象 O 有能力通知别的对象
- 使用: 用于对象或类间的动作协调与信息传递(信息推送)
1.事件的五大组成模型
- 事件的拥有者
- 事件
- 事件的响应者
- 事件处理器
- 事件处理器跟事件订阅
代码如下(示例):
以上代码:
事件拥有者:Form
事件:this.From.Click
事件的响应者:Controller conotroller = new Controller(Form)
事件处理器:This.FormClicked
事件处理器跟事件的订阅:this.Form.Click += this.FormClicked
2.事件的声明
事件声明分两种:完整声明、简略声明。
代码如下(完整声明示例):
代码如下(简略声明示例):
可以看出 简略声明不用自己声明委托字段,但是委托字段已经被声明了(在事件被触发时),只是被隐藏起来。
总结
事件 是基于委托的(有两层意思):委托是事件的底层基础,事件是委托的上层建筑
第一:(事件)需要一个委托类型来作为约束,这个约束规定了 (事件) 可以发送什么消息给 (事件的响应者) ,也规定 (事件的响应者) 能收到什么样的 (事件消息) ,这就决定了 (事件响应者) 的 (事件处理器) 必须跟这个约束匹配上,它才能订阅这个 (事件)
第二:当 (事件的响应者) 向 (事件的拥有者) 提供了,能匹配这个事件的 (事件处理器) 之后,这个 (事件处理器) 来进行保存,那能够记录和引用方法的任务,只有委托类型的实例能做到
总结: 事件这种成员无论从表层还是底层,都是依赖于委托类型的
重点: (声明委托类型) 和 (使用委托类型的一个类) 声明 (一个委托类型的字段)
在教程视频中,用到的是简略事件声明:
以下是完整声明,在 PlayerInfo 类外声明 委托类型,然后在类中声明委托字段以及事件。
之后的就是事件处理器订阅事件,就能触发事件。
而游戏中的事件处理器就是 角色状态面板、角色信息面板。
最后就是经验值的增长处理:
public static int GetRequierExpByLevel(int level)
{
//等差数列
return (int)((level - 1) * (100f + (100f + 10f * (level - 2f))) / 2);
//但是调用的时候,实参要为 level + 1
//不然等级为1时,就变成 0/0;
//加一 ,能确保 return 100,而不是零
}
收尾
接下来就是《背包模块》、《技能模块》、《商城、系统模块》、《任务模块》。