AssetBundle详解

AB包简介

AssetBundle(简称AB包)是一个资源压缩包,包括模型、贴图、预制体、声音甚至整个游戏场景,它可以在游戏运行时加载。AssetBundle能够自动处理资源的依赖关系,比如一个AB包的材质能够引用另一个AB包中的贴图。通过将游戏资源打包成AB包并上传服务器,这样可以避免所有资源都打包进APK,从而减少APK的大小,直到在游戏的运行过程中再按需加载AB包资源。

深入分析CSharp反射

反射Reflection是.NET平台在运行时获取类型(包括类、接口、结构体、委托和枚举等类型)信息的重要机制,即从对象外部获取内部的信息,包括字段、属性、方法、构造函数和特性等。我们可以使用反射动态获取类型的信息,并利用这些信息动态创建对应类型的对象。反射的优点:提高程序的灵活性和扩展性,降低程序的耦合性,动态实例化对象。反射的缺点:性能消耗比直接获取类型信息要大,反射代码比普通代码复杂,维护性差。因此普通程序不建议使用反射,需要构建灵活性和扩展性较高的系统框架时才使用。

深入理解xLua热更新原理

热更新简介

热更新是指在不需要重新编译打包游戏的情况下,在线更新游戏中的一些非核心代码和资源,比如活动运营和打补丁。热更新分为资源热更新和代码热更新两种,代码热更新实际上也是把代码当成资源的一种热更新,但通常所说的热更新一般是指代码热更新。资源热更新主要通过AssetBundle来实现,在Unity编辑器内为游戏中所用到的资源指定AB包的名称和后缀,然后进行打包并上传服务器,待游戏运行时动态加载服务器上的AB资源包。代码热更新主要包括Lua热更新、ILRuntime热更新和C#直接反射热更新等。由于ILRuntime热更新还不成熟可能存在一些坑,而C#直接反射热更新又不支持IOS平台,因此目前大多采用更成熟的、没有平台限制的Lua热更新方案。

A*算法

算法简介

A星搜索算法(A* search algorithm),简称A星算法,是一种启发式搜索算法,用于求解图中两个节点之间的最短路径及其长度。常用于游戏中NPC的移动计算和求地图中两点的实际最短路径。A星算法是Dijkstra算法的升级版,但Dijkstra算法属于盲目搜索,每次都需要访问到所有结点的路径并找出最短的一条路径,然后以该最短路径为基础更新到其他结点的路径,不断重复直到找到所有的最短路径结点。当图中的结点很多时,如果采用Dijkstra算法寻找最短路径,产生的计算量将会非常大,而采用A星算法产生的计算量将会远小于Dijkstra算法。

排序

排序概述

基本概念

排序:重新排列表中元素,使其按关键字递增或递减的过程,一般是递增的。排序算法是数据结构中最基础的算法之一。排序算法的稳定性:如果a=b且排序前a在b的前面,使用某一排序算法排序后a依然在b的前面,就称这个排序算法是稳定的。反之,则称该排序算法是不稳定的。注意,算法是否具有稳定性并不能衡量一个算法的优劣,它只是对一个算法的性质进行描述。