12k 11 分钟

# Sqlite 助手 这篇文章介绍了如何在 Unity 中使用 Sqlite Sqlite 助手是对 Sqlite 数据库语言的封装,使用者可以绕过数据库语言,用更简单的方法操作数据库 路径问题: 数据库文件(.db)应该放到 StreamingAssets 文件夹中 向 Sqlite 助手提供 StreamingAssets 中的路径,Sqlite 助手利用路径助手处理路径 # 代码 using Mono.Data.Sqlite;using System;using System.Text;using UnityEngine;namespace Common{...
4.6k 4 分钟

# 路径助手 分平台处理 StreamingAssets 路径 Application.streamingAssetsPath 会根据不同的平台返回对应的 StreamingAssets 目录,这是最常用的方法,也可以使用 Unity 宏标签手动分平台,在下面的代码中会做出演示。 只有 PC 端的 StreamingAssets 文件夹是可读写的,其他平台都是只读的(.txt 文件可以直接读,其他类型的文件需要进一步操作)。 移动端(Android、iOS 等):想要读写这些文件,需要将 StreamingAssets 文件夹中的内容拷贝到持久化路径...
4.9k 4 分钟

# XML XML 指的是可扩展标记语言(eXtensible Markup Language) XML 被设计用来传输和存储数据,其焦点是数据的内容。HTML 则用来表现数据,其焦点是数据的外观。 XML 在 Web 中起到的作用接近于 HTML。XML 是各种应用程序之间进行数据传输的最常用的工具。 XML 数据能够存储在独立的.xml 文件中。 XML 是独立于软件和硬件的信息传输工具。 # XML 的用途 XML 规定了文本的编辑格式,统一格式可以简化数据共享、简化数据传输、简化平台变更 XML 可以分离数据和其它逻辑(例:更改某个数值时,不需要更改源码,只需要更改 XML...
1.1k 1 分钟

# YAML YAML 是专门用来写配置文件的语言(它可以是 "YAML Ain't a Markup Language" 亦或是 "Yet Another Markup Language") YAML 数据能够存储在独立的.yml 文件中。 # YAML 语法 # 基本语法 大小写敏感 使用缩进表示层级关系 缩进不允许使用 tab,只允许空格 缩进的空格数不重要,只要相同层级的元素左对齐即可 #表示注释 # 支持的数据类型 对象:键值对的集合,又称为映射 / 哈希 /...
668 1 分钟

# JSON JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式,它比 XML 更小、更快、更易解析 JSON 独立于语言:JSON 使用 Javascript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。目前非常多的动态(PHP,JSP,.NET)编程语言都支持 JSON JSON 以特定的格式记录某些变量的值,可以用来给变量赋值或记录变量值 # JSON 与 JavaScript JSON 文本格式在语法上与创建...
1.4k 1 分钟

# MVC 模式 Model-View-Controller(模型 - 视图 - 控制器)模式用于应用程序的分层开发。 Model(模型):模型代表一个存取数据的对象,在数据变化时更新控制器。 View(视图):视图代表模型包含的数据的可视化。 Controller(控制器):控制器作用于模型和视图上,使视图与模型分离开。它控制数据流向模型对象,并在数据变化时更新视图。 # 类图 # 代码 # 模型 namespace MVCPattern{ /// <summary> /// 模型 /// </summary> public...
1.8k 2 分钟

# 访问者模式 属于行为型模式。 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 适用性: 主要目的是将数据结构与数据操作分离。适用于稳定的数据结构,而算法是可以多变的。 访问者模式的优点就是增加新的操作很容易,因为增加新的操作就意味着增加一个新的访问者。访问者模式将有关的行为集中到一个访问者对象中。 访问者模式的缺点是使增加新的数据结构变得困难了。 访问者模式不常用。因为数据结构不变化的情况很少,所以使用访问者模式的机会不多。 # 类图 # 代码 # 访问者 namespace...
1.4k 1 分钟

# 解释器模式 属于行为型模式。 给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。 适用性: 如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。 当有一个语言需要解释执行,并且你可以将该语言中的句子表示为一个抽象语法树时,可以使用解释器模式。 易扩展,易于实现简单文法。 对于复杂的文法比较难维护和管理。当文法非常复杂时建议使用其他的技术(语法分析程序或编译生成器) # 类图 # 代码 # 解释器 namespace...
1.9k 2 分钟

# 享元模式 属于结构型模式。 运用共享技术有效地支持大量细粒度的对象。 享元模式可以避免大量非常相似类的开销。如果能把那些不同的参数移到类实例的外面,在方法调用时将他们传递进来,就可以通过共享大幅度减少单个实例的数目。 在 CSharp 中,string 就是运用了享元模式。例:声明两个字符串 string A = "A"; string B = "A"; 使用 Object.ReferenceEquals (A, B); 检查 A 和 B 是否是相同的实例,结果:true # 类图 # 代码 #...
3.7k 3 分钟

# CSharp 多线程 每一个运行的程序是一个进程,每个进程可以有一个或者多个线程。 在单核系统的一个单位时间内 ,CPU 只能运行单个线程,运行顺序取决于线程的优先级。如果在单位时间内线程未能完成执行,系统就会把线程的状态信息保存到线程的本地储存器(TLS)中,以便下次执行时恢复执行。因为 CPU 的处理速度很快,所以我们感知不到停顿。因为切换频密,所以多线程可被视作同时运行,而实际上这是假象。 在多核系统的一个单位时间内,进程或线程可以在不同的 CPU 中运行,实现真正的并行处理。 # 线程生命周期 线程生命周期开始于 System.Threading.Thread...