UMVCL3——使用MVC思想制作UI逻辑
UMVCL3——使用MVC思想制作UI逻辑
使用MVC的UI逻辑制作实例
还是和上一章相同的UI需求
假设我们有一个主面板,它的各个UI控件需要的效果如下
有一个选角面板,它的各个UI控件需要的效果如下
该UI的MVC的代码逻辑如下:
Model层
Model层主要负责存储管理数据,及数据相关的操作,同时,对Controller层开放更新数据方法,更新数据时,执行Controller层的监听数据更新的函数
具体实现:
初始化,读取数据
更新数据(同时让Controller层脚本监听数据的更新)
保存数据
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 ...
UMVCL2——不使用MVC思想制作UI逻辑
UMVCL2——不使用MVC思想制作UI逻辑
不使用MVC的UI逻辑制作实例
假设我们有一个主面板,它的各个UI控件需要的效果如下
有一个选角面板,它的各个UI控件需要的效果如下
两面板的代码逻辑如下:
MainPanel
这个脚本实现的功能如下:
面板的显隐(加载并装载自己)
控件监听
角色按钮显示RolePanel
读取并更新数据
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566using UnityEngine;using UnityEngine.UI;public class MainPanel : MonoBehaviour{ public Text txtName; public Text txtLev; public Text txtMoney; public Text txtGem; public Text txtPow ...
EX1——A星寻路算法理论基础
EX1——A星寻路算法理论基础
A星寻路算法
A星寻路是用来计算玩家行进的最短路径的,且可以避开中间的阻挡
基本原理
不停的找周围的点,选出一个新的点作为起点,再循环的找周围的点,直到找到终点
先设定起点和阻挡(红色即遮挡)
设定终点,起点开始找周围的点
发现a3离终点最近,搜寻a3周围没有搜寻过的点,阻挡点不搜寻
发现b3离终点最近,搜寻b3周围没有搜寻过的点,阻挡点不搜寻
重复上述步骤,直到走到终点
最后将起点与终点联通起来,得到路径
详细原理
寻路消耗公式:
f(寻路消耗)=g(离起点距离)+h(离终点距离)f(寻路消耗)=g(离起点距离)+h(离终点距离)f(寻路消耗)=g(离起点距离)+h(离终点距离)
g(离起点距离)g(离起点距离)g(离起点距离)即上下左右相邻格子的距离是1,斜边相邻的格子是1.4(约等于2\sqrt{2}2)
h(离终点距离)h(离终点距离)h(离终点距离)最常用的算法是曼哈顿街区算法
简单来说,就是将x轴和y轴距离加起来算出的距离
如下图:x轴距离为5,y轴距离为1,两者加起来 ...
UEX——Unity额外知识
UEX——Unity额外知识
该系列用于放置那些在课外学习总结或者课程内容仅有一节的散课笔记,或者记录论坛发帖
A星寻路算法理论基础
UD4SL3——Excel数据读取
UD4SL3——Excel数据读取
本章代码关键字
1234567891011121314151617181920//读取Excel相关IExcelDataReader //Excel数据读取接口ExcelReaderFactory.CreateOpenXmlReader() //通过流获取Excel数据,返回一个Excel数据读取接口类型对象DataSet //数据集类型iExcelDataReader.AsDataSet() //将Excel数据读取接口类型对象转换为数据集对象//数据集相关dataSet.Tables //数据集中的所有表dataSet.Tables[i].TableName //数据集中的某个表的表名dataSet.Tables[i].Rows //数据集中的某个表的所有行 ...
UD4SL2——导入Excel相关Dll包
UD4SL2——导入Excel相关Dll包
了解Excel表的本质
Excel表本质上也是一堆数据,只不过它有自己的存储读取规则
如果我们想要通过代码读取它,那么必须知道它的存储规则
官网是专门提供了对应的DLL文件用来解析Excel文件的
Dll文件:库文件,你可以理解为它是许多代码的集合,将相关代码集合在库文件中可以方便迁移和使用
有了某个DLL文件,我们就可以使用其中已经写好的代码
而Excel的DLL包就是官方已经把解析Excel表的相关类和方法写好了
方便用户直接使用
导入官方提供的Excel相关DLL文件
可以直接将下载好的DLL文件直接放入到Editor文件夹里,之后直接在代码里调用这个库即可
UD4SL1——Unity中添加菜单栏功能
UD4SL1——Unity中添加菜单栏功能
我们之后在学习通过Excel表生成数据的功能时,可以在菜单栏加一个按钮
点击后就可以自动为我们生成对应数据了
本章代码关键字
12[MenuItem()] //菜单栏相关AssetDatabase.Refresh() //刷新Project窗口
为编辑器菜单栏添加新的选项入口
此知识点更新了更具体详细的描述,这里的描述也已迁移过去,因此请直接看:——> [MenuItem()]
可以通过Unity提供我们的[MenuItem()]特性在菜单栏添加选项按钮
特性名:[MenuItem()]
命名空间:UnityEditor
规则一:一定是静态方法
规则二:这个菜单栏按钮,必须有至少一个斜杠,不然会报错,它不支持只有一个菜单栏入口
规则三:这个特性可以用在任意的类当中
特性填入的格式:"菜单栏入口名/选项名/二级选项名/...",至少要有一个斜杠,否则报错!
12345[MenuItem("菜单栏入口/选项/二级选项/三级选项/...")]privat ...
UD4L7——C#类对象二进制数据加密
UD4L7——C#类对象二进制数据加密
何时加密?何时解密?
当我们将类对象转换为2进制数据时进行加密
当我们将2进制数据转换为类对象时进行解密
这样如果第三方获取到我们的2进制数据,当他们不知道加密规则和解密秘钥时就无法获取正确的数据
起到保证数据安全的作用
加密是否是100%安全?
一定记住加密只是提高破解门槛,没有100%保密的数据,通过各种尝试始终是可以破解加密规则的,只是时间问题
加密只能起到提升一定的安全性
常用加密算法
MD5算法
SHA1算法
HMAC算法
AES/DES/3DES算法
等等等
有很多的别人写好的第三发加密算法库,可以直接获取用于在程序中对数据进行加密
这里我们不深究,感兴趣的同学可以自己去了解
用简单的异或加密感受加密的作用
1234567891011121314151617181920212223242526272829Person p = new Person();byte key = 199; //密钥//序列化存储using (MemoryStream memoryStream = new MemoryStream( ...
UD4L6——C#类对象的反序列化
UD4L6——C#类对象的反序列化
本章代码关键字
1binaryFormatter.Deserialize() //二进制反序列化方法,传入流,返回object对象
二进制反序列化方法
主要类:
BinaryFormatter 2进制格式化类
主要方法:
Deserizlize()
参数:流,可以是文件流或是内存流(这个流存在字节数组)
返回值:反序列化出的object对象
反序列化文件中数据
主要类:
FileStream文件流类
BinaryFormatter 2进制格式化类
主要方法:
Deserizlize()
通过文件流打开指定的2进制数据文件
12345678910//通过文件流打开指定的二进制数据文件using (FileStream fileStream = File.Open(Application.dataPath + "/Lesson5_2.person", FileMode.Open, ...
UD4L5——C#类对象的序列化
UD4L5——C#类对象的序列化
本章代码关键字
12345BinaryFormatter //二进制序列化类binaryFormatter.Serialize() //将对象序列化为二进制字节数组,并传入到流内MemoryStream //内存流memoryStream.GetBuffer() //获取内存流的缓存memoryStream.ToArray() //使用字节数组获取内存流内数据
申明类对象
注意:如果要使用C#自带的序列化2进制方法,申明类时需要添加[System.Serializable]特性
注意,如果类里有另外一个类或者结构体的成员,这些类或者结构体也必须要加上[System.Serializable]特性!!!
123456789101112131415161718192021222324252627282930[System.Serializable]public class Person{ public int age = 1 ...