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...
UD4L4——文件夹相关
UD4L4——文件夹相关 本章代码关键字 1234567891011121314Directory //文件夹操作类Directory.Exists() //判断文件夹是否存在Directory.CreateDirectory() //创建文件夹Directory.Delete() //删除文件夹Directory.GetDirectories() //获取该文件夹下的所有文件夹名Directory.GetFiles() //获取该文件夹下的所有文件名DirectoryInfo //文件夹信息类directoryInfo.FullName //文件夹全路径directoryInfo.Name //文件夹名Directory.GetParent() ...
CS2L3——数组
CS2L3——数组 本章代码关键字 12345array[] //通过索引获取数组中的某个元素array[,] //二维数组array[][] //二维或者交错数组array.Length //获取数组所有元素的长度array.GetLength() //获取某一行(传入0)或者某一列(传入1,二维数组才能获取列数)的长度 数组 数组是存储一组相同类型数据的集合,数组分为一维、多维、交错数组 一般情况下,一维数组就简称为数组 概念:同一变量类型的连续的数据集合 一定要掌握的知识:申明,遍历,增删查改 所有的变量类型都可以申明为数组 她是用来批量存储游戏中的同一类型对象的容器,比如,所有的怪物,所有玩家 数组的申明 1变量类型[] 数组名; //这只是申明一个数组,但是并没有为其开辟内存空间 变量的类型,可以是我们学过的,或者没学过的,所有变量类型 以下是5种数组声明方式 12345678910111213141516int[] arr1;// 变量类型[] 数组名 = new...
CS2L2——枚举
CS2L2——枚举 本章代码关键字 1enum //枚举 枚举 枚举是一个比较特别的存在,它是一个被命名的整形常量的集合 一般用它来表示 状态 类型 等等 换句话说,枚举可以认为是给一组整数取名字, 然后,使用这组其中一个名字 来与同样是这组的一个名字比较,判断这两个名字背后数值是否是相同 申明枚举 和 申明枚举变量 注意:申明枚举 和 申明枚举变量 是两个概念 申明枚举:相当于是创建一个自定义的枚举类型 申明枚举变量:使用申明的自定义枚举类型,创建一个枚举变量 一个是创建枚举,一个是使用创建出来的枚举作为类型来创建变量 申明枚举语法 枚举名 以E或者E_开头 作为我们的命名规范 123456789101112131415enum E_自定义枚举名{ 自定义枚举项名字, //0,枚举中包裹的整形常量,第一个默认值是0 下面会依次累加 自定义枚举项名字1, //1 自定义枚举项名字2, //2}enum E_自定义枚举名{ 自定义枚举项名字 = 5, // 5 第一个枚举项的默认值 变成5了 ...
CS2L1——复杂数据类型概述
CS2L1——复杂数据类型概述 已经学过的变量类型 详细内容 ——> CS1L2——变量 有符号:sbyte int short long 无符号:byte uint ushort ulong 浮点:float double decimal 特殊:bool char string 变量的本质 详细内容 ——> CS1L3——变量的本质 变量的本质是2进制,在内存中都以字节的形式存储着,1byte = 8bit,1bit(位)不是0就是1 变量占用的内存空间由它的变量类型决定,例如一个int类型的变量,就在内存里占用4byte的空间 复杂数据类型特点 数据集合 一般是多个数据(变量)集合在一起构成的数据 自定义 一般可以自己取名字,可以自定义的数据(变量) 举个例子 枚举:整形常量的集合,可以自定义 数组:任意变量类型顺序存储的数据 结构体:任意变量的数据集合,可以自定义
UD4L3——文件流相关
UD4L3——文件流相关 本章代码关键字 1234567891011FileStream //文件流类,用于读写文件的细节new FileStream() //文件流的构造函数,需要传入要读取文件来构造文件流fileStream.Length //文件流的字节长度fileStream.CanWrite //文件流是否可写fileStream.CanRead //文件流是否可读fileStream.Flush() //将文件流缓存内的字节全部写入到文件fileStream.Close() //关闭字节流fileStream.Dispose() //将字节流的缓存资源销毁回收fileStream.Write() //文件流写入字节fileStream.Read() //文件流读取字节using () { } ...
UD4L2——文件相关
UD4L2——文件相关 本章代码关键字 1234567891011121314System.IO //输入输出命名空间File //文件操作公共类File.Exists() //判断文件是否存在File.Create() //创建文件File.WriteAllBytes() //向文件覆盖写入字节数组File.WriteAllLines() //向文件覆盖一行行写入字符串数组File.WriteAllText() //向文件覆盖写入字符串File.ReadAllBytes() //读取文件字节数组File.ReadAllLines() //读取以一行字符串为元素,从文件内读取字符串数组File.ReadAllText() //读取文件字符串File.Delete() //删除文件File.Copy() //复制文件File.Replace() ...
UD4L1——各类型数据转字节数据
UD4L1——各类型数据转字节数据 本章代码关键字 1234567BitConverter //字节数据转换器类,用于将各种数据类型转换为二进制的字节数组BitConverter.GetBytes() //将数据转换为字节数组,数组长度取决于数据类型有多少位BitConverter.ToInt32() //将字节数组转换为int类型,要转换为其他类型,记住 To+类型 或者 To+Int+位数 的方法名规律即可System.Text //Encoding所在的命名空间Encoding //编码格式类Encoding.UTF8.GetBytes() //将字符串按照UTF-8的编码格式转换为字节数组Encoding.UTF8.GetString() //将字节数组按照UTF-8的编码格式转换为字符串 不同变量类型 详细内容 ——> CS1L2——变量 有符号:sbyte int short long 无符号:byte uint ushort...
U4S1L15——通过Json数据加载配置文件
U4S1L15——通过Json数据加载配置文件 本章代码关键字 12InputActionAsset.FromJson() //将Json字符串转换为InputActionAssetplayerInput.actions.Enable() //激活PlayerInput使用的InputActionAsset 分析PlayerInput文件中的输入配置文件 在 PlayerInput 的定义文件内,我们可以发现 actions 参数使用的是 InputActionAsset 这个类型 12//PlayerInput类内的定义public InputActionAsset actions 进一步探索 InputActionAsset 的定义,我们可以发现一个读取Json字符串并解析返回 InputActionAsset 的静态方法 12345678910//InputActionAsset类内的定义public static InputActionAsset FromJson(string json){ if...
U4S1L14——获取任意键输入的信息
U4S1L14——获取任意键输入的信息 本章代码关键字 12InputSystem.onAnyButtonPress.CallOnce() //输入一次传入到此方法传入的监听函数内InputSystem.onAnyButtonPress.Call() //每次输入都传入到此方法传入的监听函数内 回顾学过的获取任意键输入的方法 键盘任意键按下 不能获取到具体的键位 123456789101112public InputAction input;void Start(){ input.Enable(); input.performed += (context) => { print("任意键按下"); print(context.control.name); print(context.control.path); //以上两个语句并不能获取到具体的键位 ...