UD——Unity数据持久化笔记
UD——Unity数据持久化笔记 数据持久化 数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称 简单来说就是:将游戏数据存储到硬盘,硬盘中数据读取到游戏中,也就是传统意义上的存盘 当游戏运行结束后,其占用的内存将被释放,内存中的数据会消失,因此我们必须要将数据保存到硬盘上,才能长久保存数据 笔记代号UD——即Unity Data的缩写 本笔记包括以下系列 PlayerPrefs XML JSON 二进制
PP——实践项目笔记
PP——实践项目笔记 P1——独立游戏开发ARPG
CS——CSharp笔记
CS——CSharp笔记 C# C#是一种新式编程语言,不仅面向对象,还类型安全。 开发人员利用 C# 能够生成在 .NET 中运行的多种安全可靠的应用程序。 C# 源于 C 语言系列,C、C++、Java 和 JavaScript 程序员很快就可以上手使用。 C# 是面向对象的、面向组件的编程语言。 C# 提供了语言构造来直接支持这些概念,让 C# 成为一种非常自然的语言,可用于创建和使用软件组件。 自诞生之日起,C# 就添加了支持新工作负载和新兴软件设计实践的功能。 C# 本质上是面向对象的语言。 你需要定义类型及其行为。 C# 文档 - 入门、教程、参考。 | Microsoft Learn 笔记代号CS——即C Sharp的缩写 C#前四部曲是学习Unity的前置内容,唯有掌握该内容才能编写Unity的脚本 本笔记包括以下系列 C#入门 - 基本代码逻辑 C#基础 - 函数,复杂数据类型,值与引用,排序算法入门 C#核心 - 面向对象 C#进阶 - 数据结构,泛型,委托与事件,协变逆变,多线程,预处理器指令,反射与特性,排序算法进阶 C#知识补充 -...
UH2S2——xLua
UH2S2——xLua xLua xLua 是由腾讯维护的一个开源项目,xLua 为Unity、.Net、Mono 等 C# 环境增加 Lua 脚本编程的能力, 借助 xLua,这些 Lua 代码可以方便的和 C# 相互调用。 自 2016 年初推广以来,已经应用于十多款腾讯自研游戏,因其良好性能、易用性、扩展性而广受好评。 现在,腾讯已经将 xLua 开源到 GitHub。其 git...
UH2S1L13——垃圾回收
UH2S1L13——垃圾回收 Lua垃圾回收 垃圾回收的关键字是collectgarbage,通过传入特定的字符串使用 本章代码关键字 123collectgarbage() --这个函数是垃圾收集器的通用接口。 通过参数 opt 它提供了一组不同的功能。collectgarbage("count") --以K字节数为单位返回 Lua 使用的总内存数collectgarbage("collect") --做一次完整的垃圾收集循环 获取内存占用 以 K 字节数为单位返回 Lua 使用的总内存数,用返回值 *1024,就可以得到具体的内存占用字节数 12test = {id = 1, name = "123123"}print(collectgarbage("count")) 进行垃圾回收 做一次完整的垃圾收集循环,将内存内未被变量引用的数据释放掉,类似于 C# 的 GC lua 中,有自动定时进行GC的方法,但是在 Unity...
UH2S1L13——自带库
UH2S1L13——自带库 本章代码关键字 123456789101112131415os.time() --返回时间戳,没有任何参数,就会返回当前时间的时间戳,传入包含year, month, day域的表,返回指定时间的时间戳os.date("*t") --返回一个包含当前时间的表,里面有各种时间单位math.abs() --绝对值math.pi --π的值math.deg() --弧度转角度math.cos() --三角函数math.floor() --向下取整math.ceil() --向上取整math.max() --最大值math.min() --最小值math.modf() --分离整数与小数math.randomseed() --设置随机数种子math.random() ...
UH2S1L12——Lua的面向对象
UH2S1L12——Lua的面向对象 Lua的面向对象 Lua没有原生的面向对象实现,因此我们必须借助表和元表自行实现面向对象 我们不仅要实现类(包括成员变量与方法,还要构造方法),还要实现面向对象有三大特性,封装、继承、多态 本章实现 12345678910111213141516171819-- 万物之父Object,所有的类都继承自它,提供最基础的继承与实例化方法Object = {}-- 类的实例化方法,返回实例化的对象function Object:new() local obj = {} self.__index = self setmetatable(obj, self) return objend-- 声明新的类的方法,需要继承哪个类就让哪个类执行该方法,声明出来的类会自动声明base成员变量,指向其父类function Object:subClass(className) _G[className] = {} local newClass =...
UH2S1L11——元表
UH2S1L11——元表 元表 任何表变量都可以作为另一个表变量的元表,任何表变量都可以有自己的元表 当我们对有元表的表中进行一些特定操作时,会执行其元表中的内容,即元表内存储的特定方法将改变其对应表的特定方法 在Lua的 table 中我们可以访问对应的 key 来得到 value 值,但是却无法对两个 table 进行操作(比如相加)。 因此 Lua 提供了元表(Metatable),允许我们改变 table 的行为,每个行为关联了对应的元方法。 例如,使用元表我们可以定义 Lua 如何计算两个 table 的相加操作 a+b。 当 Lua 试图对两个表进行相加时,先检查两者之一是否有元表,之后检查是否有一个叫 __add 的字段, 若找到,则调用对应的值。 __add 等即时字段,其对应的值(往往是一个函数或是 table)就是"元方法"。 ———— Lua 元表(Metatable) | 菜鸟教程 (runoob.com) 本章代码关键字 123456789setmetatable() ...
UH2S1L10——协同程序
UH2S1L10——协同程序 协同程序 概念已在Unity基础讲过,这里不再赘述 本章代码关键字 123456coroutine.create() --创建协程,返回thread类型变量coroutine.wrap() --创建协程,返回function类型变量coroutine.yield() --挂起协程,参数用于返回协程coroutine.resume() --启动thread类型的协程变量,返回协程运行是否成功和协程返回值coroutine.status() --检测thread类型的协程变量的运行状态coroutine.running() --返回当前正在运行的协程的协程号 协程的创建 使用coroutine.create传入作为协程的函数,创建协程,检查类型发现其变量类型为thread 123456function Fun() print(123)endlocal co = coroutine.create(Fun)print(type(co)) 1thread 使用...
UH2S1L9——特殊用法
UH2S1L9——特殊用法 本章代码关键字 1... and ... or ... --使用Lua的and与or的特性,模拟的一个三目运算符 多变量赋值 一行代码可以为多个变量赋值,如果后面的值不够,则后面的变量自动补空,如果后面的值过多,则多余的值被忽略 123456789101112131415print("**********多变量赋值************")local a, b, c = 1, 2, "123"print(a)print(b)print(c)local a, b, c = 1, 2print(a)print(b)print(c) --nillocal a, b, c = 1, 2, 3, 4, 5,...