自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (6)
  • 收藏
  • 关注

原创 unity- ECS Entitas消灭星星项目

这是个使用Unity Entitas框架写的一个消灭星星的小游戏。整个项目的结构也非常的简单。项目下载地址DesperateDevs,Entitas,Generated为Entitas框架自带的文件夹,Generated为我们通过框架的代码生成器生成的代码。Script文件夹为我们自己的代码文件夹:Component是我们定义的组件类。System是我们定义的系统类。Drives文件夹是我们提供的游戏驱动管理类。主要的功能是让游戏逻辑在尽量少的改动代码的前提下,适用于不同的运行环境。虽然说E

2020-10-09 10:07:07 796 1

原创 ECS Entitas源码分析(五)___System

介绍总结

2020-09-06 21:15:27 579

原创 对 unity Time.timeScale的一些理解

介绍总结

2020-08-19 20:52:33 629

原创 ECS Entitas源码分析(四)___Entity

Entity介绍Entity是ECS框架中三大基本概念之一 :Entity(实体)。ECS中所有的操作对象都是它。它本身对象并不带有任何属性与表达含义,它只有一个在它所有Context中唯一的ID(_creationIndex)。它所有的属性与含义都是通过挂在它身上的组件(Component)来组合表达的。所以说Entity本身不包含数据,它只是数据的搬运工。它也不管理任何数据,不对Component上的数据做任何的运算,只是提供对Conponent的增、删、查、改等方法,以及在自身Component发生

2020-08-02 00:54:27 669

原创 ECS Entitas源码分析(三)___Component

Component介绍

2020-07-31 00:00:15 443

原创 ECS Entitas源码分析分析(二)__Context

Context介绍Context是Entitas中的上下文环境,主要用于管理当前环境下的所有Entity以及Group的创建与回收。可以同时存在多个Context,Context之间互不影响。所有的Context由Contexts单例管理。一、ContextsContexts继承自IContexts,主要用于创建和保存当前所有的Context。Contexts类由Entitias的代码生成器生成,无须我们手动实现。...

2020-07-16 00:26:05 841 1

原创 ECS Entitas源码分析(一)___概括

Entitas概况

2020-07-10 00:21:47 1133

原创 UnityShader 全屏界面变灰

之前的面试的时候有被问到,像4月4号清明节的时候,很多软件的界面都变成灰色,想要实现这个有什么思路,当时由于紧张,没有什么思路,后面想想,用屏幕后处理是可以实现的,像很多游戏,主角死亡后,游戏画面变灰,会不会也是这么实现的呢?话不多说,直接上代码:CS代码:首先我要准备渲染RenderTexture的材质,这里我们使用一个可以在屏幕后处理中使用的通用基类。using UnityEngine;...

2020-04-19 22:31:46 2587

原创 Lua string(字符串)(源码解析)

string类型作为Lua中几种基本数据类型之一,使用频率那是相当的高,所以了解Lua中字符串的实现原理,能够让我们更合理、更高效的使用Lua中的字符串。避免一些误区,提高程序效率。这里介绍的所有代码都基于Lua5.1版本。一、Lua中string的数据结构一般来说,要表示一个字符串一般都需要两个关键数据:(1)字符串的长度(2)指向字符串首地址的指针。Lua中的字符串结构设计也是围绕这...

2020-02-29 16:10:54 1440

原创 Lua数据类型(源码解析)

我们都知道Lua是一门动态类型的脚本语言,也就是说同一个变量可以在不同的时刻指向不同类型的数据。例如local a = nila = 1a = "123"而在Lua中有8中基础的数据类型:nil(空),boolean(布尔),number(数字),string(字符串),table(表),function(函数),userdata(自定义类型),thread(协程),那这几种基础类型在L...

2020-02-25 18:52:19 607

原创 Lua函数调用报错

之前的项目开发中有听到同事提及过有一种写法函数在调用时会报错,今天在看书的过程中又看到了,记录下来:local funA = function(n) if n == 0 then return 1 else return n+funA(n-1) endendprint(funA(5))例如上面的代码,我们想求1+2+3+ ... +...

2019-12-23 17:25:50 4472

原创 多边形碰撞检测(分离轴算法Lua实现)

在游戏开发中,我们一般常用的碰撞检测算法有AABB,OBB以及分离轴算法。AABB与OBB一般用于矩形的碰撞检测,而多边形的碰撞检测一般使用分离轴算法,这里说的都是2D图形的碰撞检测一、什么是分离轴?将两个多边形投影到任意的一条轴上,如果能找到至少有一个轴上的两个多边形投影没有重叠,那么就说明这两个多边形没有发生碰撞。在程序实现中,我们不可能去检测所有的轴,这是不现实的,不过好在多边形的特...

2019-12-15 23:47:35 1880

原创 Lua与C#交互原理

Lua与C#交互原理C#与Lua的交互主要是由Lua官方的提供的LuaInterface.dll库实现的。(1)什么是LuaInterface?LuaInterface是一个开源的工程项目,他的作用就是将C#与Lua联系起来,这个工程项目中包含了两个dll文件,也就是动态链接库文件,文件中自然有封装好的操作函数,我们只要知道怎么使用他们就可以了。LuaInterface.dll:在C#中操...

2019-11-13 20:11:17 1621

原创 unity shader 变种(多重编译 multi_compile)

一、定义在unity中我们可以通过使用#pragma multi_compile或#pragma shader_feature指令来为shader创建多个稍微有点区别的shader变体。这个Shader被称为宏着色器(mega shader)或者超着色器(uber shader)。实现原理:根据不同的情况,使用不同的预处理器指令,来多次编译Shader代码。在运行时,Unity从Materia...

2019-09-26 21:13:18 266

原创 云风大神pbc import使用的一个小坑

最近项目使用unity+Xlua,通讯协议这一块用的是谷歌的protobuf,所以要lua层使用协议,就使用了pbc。生成好proto文件后使用pbc生成pb文件时,一直提示我import的某个文件找不到,开始一直检查是不是路径有问题,甚至一度怀疑pbc不支持import,不过后来google到,不是不支持,而是使用有限制。读代码了解限制.png但是有没有说是什么限制,读代码实...

2019-08-26 14:50:18 298

原创 常见的几种排序算法(c++)

一、冒泡排序1、算法思想冒泡排序是一种简单的排序算法,通过循环遍历,将临近的两个元素进行比较,满足排序规则时,进行下一组元素对比,当不满足排序规则时,将两个元素交换位置,再继续进行下一组元素对比,确保最大的元素在一遍循环过后一定排在最后面,然后最后通过最多n2次循环对比,直到完全有序。2、算法描述冒泡过程.gif(1)比较两个相邻的元素,如果第一个比第二个大,那么就交换他们的...

2019-06-02 19:12:27 454

原创 CocosCreator 长按与双击脚本

实现了一个简单的控件长按与双击事件的脚本,使用方法与cc.Button类似,选择需要的事件类型,指定事件回调方法即可。代码:cc.Class({ extends: cc.Component, properties: { isLongTouch : { default : false, tooltip : "...

2019-05-13 21:46:16 546

原创 简单的CocosCreator自定义全局事件

creator 中的事件:监听和发射事件但是这样并不能完全满足我们的需求,我们通常希望在各个地方自由的派发事件,同时所有的监听都能收到派发出来的事件,所以实现了个EventCenter,简单的实现了功能。记录一下:代码:window.EventCenter = { _events: {}, EventType : { TEST_EVENT: "TEST_...

2019-05-08 17:24:43 920

原创 lua table转string

function serialize(obj) local lua = "" local t = type(obj) if t == "number" then lua = lua .. obj elseif t == "boolean" then lua = lua .. tostring(obj) ...

2018-12-27 11:24:01 1757

原创 UnityShader-屏幕后处理之边缘检测

一、屏幕后处理原理我的另外一篇文章有详细的介绍:UnityShader-屏幕后处理(调节亮度,饱和度,对比度)二、卷积与卷积核卷积核通常是一个四方形网格结构(例如2x2,3x3的方形区域),该方形区域每个方格都有一个权重值。当对图像中的某个像素进行卷积时,我们会把卷积核的中心位置放在该像素上,翻转核之后再依次计算核中每个元素和其覆盖的图形像素值的乘积并求和,得到的结果就是该位置的像素值。...

2018-10-25 17:06:40 184

原创 Unity透明效果原理与实现

一、前提知识(1)深度缓存它的基本思想是:根据深度缓存中的值来判断该片元距离摄像机的距离,当渲染一个片元时,需要把它的深度值和已经存在于深度缓冲中的值进行比较(如果开启了深度测试),如果它的值距离摄像机更远,那么说明这个片元不应该被渲染到屏幕上(有物体挡住了它);否则,这个片元应该覆盖掉此时颜色缓冲中的像素值,并把它的深度值更新到深度缓冲中(如果开启了深度写入)。(2)颜色缓存需要渲染的场...

2018-10-16 12:09:52 792

原创 UnityShader-屏幕后处理(调节亮度,饱和度,对比度)

一、什么是屏幕后处理在渲染完整个场景得到屏幕图像后,再对这个图像进行一系列的操作,实现各种屏幕特效。常用于处理景深、描边,图像模糊等特效。二、实现原理想要实现屏幕后处理的基础在于得到渲染后的整个屏幕的图像,即抓取屏幕,在Unity中为我们提供了一个方便的接口——OnRenderImage函数:MonoBehaviour.OnRenderImage(RenderTexture src, Re...

2018-08-29 18:00:24 545

原创 Lua常用的文件操作

一、基本的文件读写(1) io.open功能:按指定的模式打开一个文件,成功则返回文件句柄,失败则返回nil+错误信息file = io.open (filename [, mode])mode 的值有:r 以只读方式打开文件,该文件必须存在。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。a 以附加的方式打开只写文件。若文件不存在,则会建立该文...

2018-08-13 21:12:57 422

原创 UnityShader入门精要-凹凸映射

一、什么是凹凸映射当我们要表现一个模型凹凸有致的时候,我们往往需要给这个模型添加许许多多的面来表现它的凹凸感,但是当我们的模型的面数越多的时候对于渲染时的性能开销也就也大,所以这往往也是不太可取的。这是就提出了凹凸映射这种解决方法。凹凸映射的目的就是使用一张纹理来修改模型表面的法线,以便为模型提供更多的细节。PS:这种方法不会真的改变模型的顶点位置,只是然那个模型看起来好像凹凸不平。上面...

2018-07-22 18:12:10 207

unity Entitas消灭星星项目

使用Unity ECS Entitas框架开发的消灭星星项目,可以直接运行,适合unity新手,或者想了解ECS的同学学习

2020-09-08

c语言学生管理系统(使用链表实现)

一个简单的学生管理系统,主要是为了熟悉指针和链表的操作。代码简单易懂,注解详尽,适合新手。

2015-08-06

android+数字拼图游戏

通过移动数字,完成数字的排序,拼成图片。

2015-03-18

简单MP3播放器

简单的MP3音乐播放器,通过系统媒体数据库得到SD卡中得MP3文件,播放音乐。

2014-09-17

android 学生课程表

android学生课程表用SQLite数据库存放学生的数据信息,并通过布局以类似表格的形式显示出来

2014-08-08

c/c++汉若塔小游戏源码

c/c++汉若塔游戏源代码,完全手写,有详细的注释,

2014-05-03

空空如也

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

TA关注的人

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