自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (4)
  • 收藏
  • 关注

翻译 Unity——UI性能优化技巧

划分画布问题:UI Canvas上有一个或多个元素变化时,会污染整个画布。画布(Canvas)是Unity UI的基本组件。它会生成网格来呈现放置在画布上的UI元素,当UI元素变化时,它会重新生成网格并向GPU发起绘图调用,从而显示出UI。生成这些网格会消耗大量性能。需要将UI元素收集到批处理中,从而尽可能减少绘图调用。因为批处理的生成过程性能消耗较大,通常只在必要时候才重新生成。问题在于,当画布上有一个或多个元素变化时,必须重新分析整块画布,才能得到绘制元素的最优方法。许多用户将整个游戏的UI都

2021-08-04 19:57:19 671 1

转载 Lua查找表元素过程(元表、__index方法是如何工作的)

近日开始频繁使用Lua,发现身边有很多同学对元表的理解不太正确,于是把这块东西理了一下,分享出来Lua的表本质其实是个类似HashMap的东西,其元素是很多的Key-Value对,如果尝试访问了一个表中并不存在的元素时,就会触发Lua的一套查找机制,也是凭借这个机制来模拟了类似“继承”的行为举例说明:tempTable = {}print(tempTable.memberA) --这里试图打印tempTable并不存在的成员memberA执行结果:nil输出为nil的原因很简单,tem

2021-03-09 21:30:38 431

原创 数据结构的基本操作

数据结构的基本操作对于任何数据结构,其基本操作无非遍历 + 访问,再具体一点就是:增删查改。数据结构种类很多,但它们存在的目的都是在不同的应用场景,尽可能高效地增删查改。话说这不就是数据结构的使命么?如何遍历 + 访问?我们仍然从最高层来看,各种数据结构的遍历 + 访问无非两种形式:线性的和非线性的。线性就是 for/while 迭代为代表,非线性就是递归为代表。再具体一步,无非以下几种框架:数组遍历框架,典型的线性迭代结构:void traverse(int[] arr) {

2020-12-03 18:18:16 2516

原创 观察者设计模式简单实现

所谓观察者模式,举个例子现在许多购房者都密切观察者房价的变化,当房价变化时,所有购房者都能观察到,以上的购房者属于观察者,这便是观察者模式。 java中可以借助Observable类和Observer接口轻松实现以上功能。当然此种模式的实现也不仅仅局限于采用这两个类。 示例代码如下:import java.util.Observable; import java.util.Observer; class House extends Observabl...

2020-09-18 16:21:04 204

原创 代理设计模式简单实现

指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。比如生活中的通过代理访问网络,客户通过网络代理连接网络(具体业务),由代理服务器完成用户权限和访问限制等与上网相关的其他操作(相关业务)。 示例代码如下:interface Network { // 定义Network接口 public void browse(); // 定义浏览的抽象方法 } class Real implements Network { // 真...

2020-09-18 16:19:10 123

原创 工厂设计模式简单实现

程序在接口和子类之间加入了一个过渡端,通过此过渡端可以动态取得实现了共同接口的子类实例化对象。 示例代码如下:interface Animal { // 定义一个动物的接口 public void say(); // 说话方法 } class Cat implements Animal { // 定义子类Cat @Override public void say() { // 覆写say()方法 System.ou...

2020-09-18 16:08:36 114

原创 单例设计模式简单实现

所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类(Singleton类)永远只会有一个实例化对象产生。具体实现步骤如下: (1) 将采用单例设计模式的类的构造方法私有化(采用private修饰)。 (2) 在其内部产生该类的实例化对象,并将其封装成private static类型。 (3) 定义一个静态方法返回该类的实例。class Singleton { private static Singleton instance = n...

2020-09-18 16:06:31 158

原创 Unity AssetBundle 工作流程(下)

本文参考官方文档:https://docs.unity3d.com/cn/current/Manual/AssetBundlesIntro.html管理 AssetBundle上一篇我们已经知道了AssetBundle的基本工作流程以及构建和加载,是时候讨论如何管理所有这些已加载的 AssetBundle 了。AssetBundle Manager 是 Unity官方 制作的一个工具,用于进一步简化 AssetBundles 的使用。它有许多功能,包括依赖项管理,加载资源,加载场景,加载变体等。

2020-07-09 11:12:51 225

原创 Unity AssetBundle 工作流程(上)

Unity里有两种动态加载资源的方法:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大。Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时 动态加载,可以指定路径和来源的。本文参考官方文档:https://docs.unity3d.com/cn/current/Manual/AssetBundlesIntro.html什么是AssetBundle呢?AssetB.

2020-07-09 11:09:01 339

原创 Unity 序列化保存数据到本地文件

一般数据保存我们都会用Unity自带的PlayerPrefs这个类,在数据较少时使用起来非常方便,通过特定的键值来存储相对应的数据,但是它的弊端也是显而易见的当我们要存储一个类,或者较多数据时再用它来存储就很不方便了。所以这篇文章给大家介绍一下通过序列化来保存一个类的数据下面是一个玩家类,它包括 金币数量,道具数量,关卡,分数等数据,这些数据我们都需要持久化[System.Seriali...

2020-04-25 11:14:55 2488

翻译 C#堆与堆栈(Stack vs Heap)值类型 vs 引用类型

当我们代码执行时,.NET框架有两个位置将项目存储在内存中。堆栈和堆都可以帮助我们运行代码。它们驻留在我们机器上的操作内存中,并包含我们需要的所有信息Stack vsHeap 有什么区别?堆栈或多或少地负责跟踪代码中正在执行的内容(或所谓的“调用”)。堆或多或少负责跟踪我们的对象(我们的数据,好吧...大部分-我们稍后再讨论。)。可以将堆栈(stack)视为一系列堆...

2020-04-17 14:27:43 307

原创 2D碰撞优化 四叉树碰撞检测算法

最近公司的小游戏项目贪吃蛇大作战出现了一些优化问题,当游戏玩到后期蛇会变得很长很长,食物也越来越多,游戏就会变得很卡,因为蛇的碰撞使用cocos creator中自带的Collider去检测食物和蛇身体,随着游戏的进行就造成了碰撞体越来越多,变得卡顿,查阅了一些资料,了解到了四叉树碰撞检测算法,所以我将游戏整体的检测进行了一下优化。首先研究一下四叉树算法的原理QuadTree四叉树顾名思义...

2020-03-22 12:26:05 1856

原创 OpenGL学习(四)——创建三角形

LearnOpenGL——https://learnopengl-cn.github.io/三个名词:顶点数组对象:Vertex Array Object,VAO 顶点缓冲对象:Vertex Buffer Object,VBO 索引缓冲对象:Element Buffer Object,EBO或Index Buffer Object,IBO当指代这三个东西的时候,可能使用的是全称,也可...

2019-10-24 17:50:46 309

原创 OpenGL学习(三)——Hello Window

LearnOpenGL——https://learnopengl-cn.github.io/先试试能不能让GLFW正常工作。首先,新建一个.cpp文件,然后把下面的代码粘贴到该文件的最前面。#include <glad/glad.h>#include <GLFW/glfw3.h>请确认是在包含GLFW的头文件之前包含了GLAD的头文件。GLAD的头文件包含...

2019-10-16 12:07:36 289

原创 OpenGL学习(二)——创建窗口

LearnOpenGL——https://learnopengl-cn.github.io/在我们画出出色的效果之前,首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口。然而,这些操作在每个系统上都是不一样的,OpenGL有目的地从这些操作抽象(Abstract)出去。这意味着我们不得不自己处理创建窗口,定义OpenGL上下文以及处理用户输入。幸运的是,有一些库...

2019-10-16 11:41:37 237

原创 OpenGL学习(一)——什么是OpenGL

LearnOpenGL——https://learnopengl-cn.github.io/什么是OpenGL 在开始这段旅程之前我们先了解一下OpenGL到底是什么。一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Kh...

2019-10-12 12:30:03 820

转载 Unity 脚本执行顺序问题

打开Edit-&gt;Project Settings-&gt;Script Execution Order,然后点击加号把要更改的脚本都添加进来。然后可以通过上下拖动的方式,或者手动修改右边数值的方式改变他们的先后次序。 单击Apply按钮。再次运行结果如图。这说明在强制脚本的执行顺序以后,Unity不再按照一个游戏物体一个游戏物体的顺序了,而是先...

2018-10-17 12:08:22 460

原创 Unity 宏定义

一些自带的宏定义UNITY_EDITOR 编辑器调用。UNITY_STANDALONE_OSX 专门为Mac OS(包括Universal,PPC和Intelarchitectures)平台的定义。UNITY_DASHBOARD_WIDGET Mac OS Dashboard widget (Mac OS仪表板小部件)。UNITY_STANDALONE_WIN Windows 操作...

2018-08-28 16:00:35 633

原创 Lua调用c#

1.new C#对象c#:GameObject obj = new UnityEngine.GameObject ();lua:obj = CS.UnityEngine.GameObject ();Lua new一个c#对象不需要写new,lua只要调用c#的类,需要写CS.命名空间.类名或者CS.类名 2.lua调用c#的静态变量或者方法CS.命名空间.类名.变量名或者方...

2018-07-31 14:53:04 1596

原创 XLua

要使用xlua引用命名空间Using XLua; LuaEnv : 可以理解为lua的虚拟机LuaEnv的创建:LuaEnv luaenv = new LuaEnv();LuaEnv的销毁luaenv.Dispose(); 执行lua文件1.执行lua的语句luaenv.DoString (“print(‘hello world’)”);注意字符串必...

2018-07-26 10:49:45 582

原创 Lua

Lua 轻量型的脚本语言,不要编译 Lua语句不需要分号结尾,每一行都是一条语句,写分号也没有问题 注释:单行: —- 双横杆代表单行注释多行: —[[. . ]]以—-[[开头,直到找到]]结尾 变量的定义:Lua的变量定义不需要写变量类型,直接变量名 = 值,lua会根据你赋值的值来判断类型可以使用type(a)的形式来获得a的类型变量名:跟c#类似...

2018-07-26 10:48:28 544

原创 AssetBundle基本操作

AssetBundle — AB什么是AB?AB就是把一些资源文件或者场景文件以某种方式紧密保存的一个文件,AB的资源文件可以包括预制体,模型,材质,图片和场景。注意AB包中不能包含脚本文件,unity可以在AB包中加载资源使用,用作热更新. 使用ab包的热更新流程?1.打包AB包2.上传服务器3.客户端运行时检查判断版本号,如果不同从服务器下载新的ab包去替换本地的a...

2018-07-26 10:47:04 303

原创 Editor编辑器操作

Editor辅助开发对编辑器进行拓展开发特殊的文件夹Editor, Editor Default Resources 命名空间:UnityEditor如果是游戏逻辑的脚本绝对不允许引用该命名空间,因为打包的时候会报错如果引用了UnityEditor的类,必须放Editor文件夹,证明不是游戏逻辑,不需要打进安装包  关于mono类里的一些编辑器开发,继承了m...

2018-07-26 10:45:55 3450

原创 Json操作

Json. 文件,.Json使用固定格式来存储和表示数据 Json : , : {} “” []1.对象用键值对表示. “键”:值。键字符串2.数据由逗号分隔开3.花括号保存对象4.方括号保存数组 物品:名字,攻击力,类型对象:键值对表示键值对中的键名写在前面并且必须用双引号“”包裹,使用冒号:分割键和值例如:{“name” : “屠龙刀”, “...

2018-07-26 10:43:55 572

原创 文件操作

什么是文件?文件是存储在硬盘上的最后的节点 文件夹式什么?文件的上级单位就是文件夹 文件夹的基本特征?文件夹式层级化结构,对于同级的节点绝对不可以重名,子节点和父节点可以同名 操作文件夹和文件的命名空间 —- System.IO 操作文件的类:Directory 静态类,工具类,不能实例化Directory.CreateDirectory ()创建文...

2018-07-26 10:43:05 133

原创 MVC

MVC:—Model(数据层), View(视图层), Controller(控制层) Model - 数据层数据中心,位于整个框架的最底层功能:1,存放相关的数据。2,修改数据。3,查数据,4,通过事件通知视图层改变  View - 视图层视图层就是给玩家展示的,(ui,场景内的一些表现),位于整个框架的最顶端。注意:视图层对model只有读取权限,而没有写入...

2018-07-26 10:41:10 238

原创 自己手动组装一个scroll view

自己手动组装一个scroll view:content:滚动的对象,可拖动的物体viewport:视窗,content的锚点的选择:当水平拖动,需要固定content的高度值,content size fitter开启水平的自动扩容当竖直拖动,需要固定content的宽度值,content size fitter开启竖直自动扩容Grid layout groupcell...

2018-07-26 10:39:29 196

原创 3D数学四元数

向量的叉乘(外积/叉积):a(ax, ay, az)b(bx, by, bz)a x b = c (aybz – azby, axbz – azbx, axby - aybx)两个向量叉乘的几何意义:得到一个新的向量,c向量,c向量同时垂直于a向量和b向量。垂直于a向量和b向量所组成的平面,我们也把c向量叫做那个平面的法向量。向量的叉乘不满足乘法交换律,但是有一定的规律:a x ...

2018-07-26 10:36:40 583

原创 3D数学基本概念

坐标系的概念:就是物体在平面中或立体空间中变换自己的方位和位置的一种参考向量:概念:有大小,有方向的箭头,但是向量是没有位置的概念。方向就是从A点指向B点的方向,大小就是A点到B点的距离,这个距离就是向量的长度,叫做向量的模和向量相关的几个概念:负向量:和原向量方向相反,大小相等的向量。零向量:大小为0,没有方向。单位向量:模长为1的向量叫单位向量。如果想让一个向量在保持原有...

2018-07-26 10:35:06 762

原创 数据结构——时间复杂度

一、算法:是解决特定问题求解不走的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。1.正确性:算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需求、能够得岛问题的正确答案。2.可读性:算法设计的另一目的是为了方便阅读、理解和交流。3.健壮性:当数据不合理时,算法也能作出相关处理,而不是产生异常或莫名其妙的结果。4.时间效率高和存储量低 如果一段代...

2018-04-13 11:56:51 327

TestPlayerData.unitypackage

一般数据保存我们都会用Unity自带的PlayerPrefs这个类,在数据较少时使用起来非常方便,通过特定的键值来存储相对应的数据,但是它的弊端也是显而易见的当我们要存储一个类,或者较多数据时再用它来存储就很不方便了。所以这篇文章给大家介绍一下通过序列化来保存一个类的数据 测试工程

2020-04-25

quadtree-js-master.zip

许多游戏需要使用碰撞检测算法来确定两个对象何时发生碰撞,但是这些算法通常是昂贵的操作,并且会大大降低游戏的速度。一种加快速度的方法是减少必须进行的检查的次数。屏幕相对两端的两个对象不可能碰撞,因此无需检查它们之间是否存在碰撞。这是四叉树发挥作用的地方。

2020-03-22

超好用的打包测试控制台.unitypackage

超好用的打包测试控制台,打包之后在真机或模拟器上运行显示控制台打印日志

2019-05-28

Cleaner.unitypackage

Cleaner.unitypackage插件清除所有未引用的图片资源

2019-05-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除