- 博客(173)
- 资源 (26)
- 收藏
- 关注
原创 Button
Button Click 触发过程流程1. EventSystem的Updateprotected virtual void Update(){ if (current != this) return; TickModules(); //遍历并刷新所有的InputModules,更新Modules中的m_LastMousePosition、m_MousePosition //..略..// //执行当前InputModule的Process,由
2022-04-12 10:15:23 250
原创 Selectable
简介: Selectable是Button、InputField、Toggle、ScrollBar、Slider、Dropdown的基类。类图(部分):操作流程:SelectHandler Selectable的基础事件:由输入检测(InputModule)与输入响应模块(Selectable等组件)调用用来更换EventSystem当前对象时被触发的事件类型。部分核心代码:EventSystem.cs//输入检测与输入响应的模块调用,变化当前选中的Game...
2022-04-12 10:12:54 561
原创 事件系统-输入模块
管理所有的输入检测模块(InputModule)并帧调用Module的执行(Process)调动射线捕捉模块(Raycasters),为InputModule提供结果(具体的触点所穿透的对象信息)InputModule 管理更新EventData 判断当前的操作事件,并通知具体的EventSystemHandler 进行逻辑处理。事件监听及触发分四个部分:事件数据、输入模块、射线碰撞检测、事件调度。事件数据:BaseEventData:是事件数据类的父类,其中包括Eve...
2022-04-12 10:10:50 254
原创 Text实现原理
简介: UGUI的Text就是位图字体,先通过TTF字体将字体形状生成在位图中,接着就是将正确的UV设置给字体的Mesh。不同于Image不仅要处理网格还要处理材质和纹理,Text并不需要对材质纹理做更加具体的处理,因为Text的材质默认来自于它的字体本身或是它身上所被设置的材质。位图字体: 位图字体是一种计算机字体,它使用一个称为像素的图片元素来构建一个称为glyphs的符号,组成一个总的位图字体。当一个紧凑的、快速加载的字体必不可少时,就使用这种字体。位图字体有时被称为光栅字体,同...
2022-04-12 10:04:56 343
原创 Image
简介 Image继承了MaskableGraphic, ISerializationCallbackReceiver, ILayoutElement, ICanvasRaycastFilter,提供了四种ImageType:Simple(普通)、Sliced(切割)、Tiled(平铺)、Filled(填充)。继承了ILayoutElement是一个布局元素,可以被各种布局组(ILayoutGroup)所包含,将它和其他布局元素进行布局。更新流程图ImageType方式:Sim...
2022-04-12 09:54:44 230
原创 MaskableGraphic
简介 MaskableGraphic在 Graphic的基础上实现了裁剪与遮罩功能。 这主要是由 IClippable、IMaskable 两个接口来实现的。在Graphic更新材质的流程中有提及Mask。Graphic 可以理解成由骨头和皮肤所组成,骨头即顶点信息所构建的网格(Mesh),皮肤则是依附于Mesh的材质和纹理。实际上Mesh是不可见的,对于可见物的处理(例如Mask遮罩剔除)都是针对于Material。理解清楚IClippable与IMas...
2022-04-12 09:47:26 624
原创 Graphic
简介: Graphic 作为图像组件的基类,主要实现了网格与图像的生成及刷新方法。在生命周期Enable阶段、Editor模式下的OnValidate中、层级/颜色/材质改变时都会进行相应的刷新(重建)。重建过程主要通过 CanvasUpdateSystem 最终被Canvas所重新渲染。图形绘制过程注册Canvas.willRenderCanvases事件,UI发生变动,该事件触发 从渲染队列中获取元素,分别调用ReBuild方法 Rebuild方法中完成网格、材质等更新 u..
2022-04-12 09:39:44 196
原创 CanvasUpdateSystem 画布刷新系统
制作UI过程,添加Canvas组件将会打断和之前元素DrawCall的合并,每个Canvas都会开始一个全新的DrawCall,当Canvas需要重绘的时候会调用SendWillRenderCanvases()方法。Canvas.cs(部分源码)//部分源码public sealed class Canvas : Behaviour{ public delegate void WillRenderCanvases(); //公有事件,在CanvasUp...
2022-04-12 09:32:33 1795
原创 UGUI原理简述
绘制原理核心概念:Mesh、Vertex、Triangle、UV说明:Mesh:网格,决定物体的形状 Vertex :顶点,组成Mesh的元素 Triangle :三角形,决定顶点顺序 UV:纹理贴图坐标下面使用例子依次介绍绘制原理,编写脚本:public class CreateImage : MonoBehaviour{ private MeshFilter meshFilter; private MeshRenderer re...
2022-04-12 09:25:41 1269
原创 设计模式实例(Lua)笔记之七(Decorator模式)
1.描述 就说说"我"上小学的的糗事吧。我上小学的时候学习成绩非常的差,班级上 40 多个同学,我基本上都是在排名 45 名以后,按照老师给我的定义就是“不是读书的料”,但是我老爸管的很严格,明知道我不是这块料,还是往赶鸭子上架,每次考试完毕我都是战战兢兢的,“竹笋炒肉”是肯定少不了的,能少点就少点吧,肉可是自己的呀。四年级期末考试考完,学校出来个很损的招儿(这招儿现在很流行的),打印出成绩单,要
2015-08-21 14:19:06 1957
原创 设计模式实例(Lua)笔记之六(Adapter模式)
1.描述 “我”在 2004 年的时候带了一个项目,做一个人力资源管理,该项目是我们总公司发起的项目,公司一共有 700 多号人,包括子公司,这个项目还是比较简单的,分为三大模块:人员信息管理,薪酬管理,职位管理,其中人员管理这块就用到了适配器模式,是怎么回事呢?当时开发时明确的指明:人员信息简管理的对象是所有员工的所有信息,然后我们就这样设计了一个类图: 这个项目是 04 年年底
2015-08-21 12:30:41 1706 1
原创 设计模式实例(Lua)笔记之五(Bridge模式)
1.描述 今天我要说说我自己,梦想中的我自己,我身价过亿,有两个大公司,一个是房地产公司,一个是服装制造业,这两个公司都很赚钱,天天帮我在累加财富,其实是什么公司我倒是不关心,我关心的是是不是在赚钱,赚 了多少,这才是我关心的,我是商人呀,唯利是图是我的本性,偷税漏税是我的方法,欺上瞒下、压榨员工血汗 我是的手段嘛,呵呵,同时我公司也 会发展,终于在有一天我觉得赚钱速度太慢,于是我上下疏
2015-08-20 16:25:47 2504
原创 设计模式实例(Lua)笔记之五(Prototype 模式)
1.描述 首先从实际生活来了解原型模式的由来,假设你有一份非常好的讲义,你的朋友也想要一份,那么怎么办?重新手抄一份?显然不是,当然是用复印机复印一份来得方便、直接,并且准确性也高,这种用原型来复制而不是重新创建的思维方式就是原型模式的核心思想。 Prototype Pattern也是一种创建型模式,它关注的是大量相同或相似对象的创建问题。应用原型模式就是建立一个原型,然后通过对原型来
2015-08-20 10:37:30 2687
原创 设计模式实例(Lua)笔记之四(Builder 模式)
1.描述: 又是一个周三,快要下班了,老大突然又拉住我,喜滋滋的告诉我“牛叉公司很满意我们做的模型,又签订了一个合同,把奔驰、宝马的车辆模型都交给我我们公司制作了,不过这次又额外增加了一个新需求:汽车的启动、停止、喇叭声音、引擎声音都有客户自己控制,他想什么顺序就什么顺序,这个没问题吧?”。 看着老大殷切的目光,我还能说啥,肯定的点头,“没问题!”,加班加点做呗,“再苦再累就当自己二
2015-08-20 10:25:26 2099 1
原创 设计模式实例(Lua)笔记之三(Singleton单例模式)
1.描述: 这个模式是很有意思,而且比较简单,但是我还是要说因为它使用的是如此的广泛,如此的有人缘,单例就是单一、独苗的意思,那什么是独一份呢?你的思维是独一份,除此之外还有什么不能山寨的呢?我们举个比较难复制的对象:皇帝。 中国的历史上很少出现两个皇帝并存的时期,是有,但不多,那我们就认为皇帝是个单例模式,在这个场景中,有皇帝,有大臣,大臣是天天要上朝参见皇帝的,今天参拜的皇帝应该和昨天、
2015-08-20 10:19:39 4457
原创 设计模式实例(Lua)笔记之二(AbstractFactory抽象工厂模式)
1.描述 上一篇博文讲到女娲造人,人是造出来了,世界时热闹了,可是低头一看,都是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍脑袋,Shit!忘记给人类定义性别了,那怎么办?抹掉重来,然后就把人类重新洗牌,准备重新开始制造人类。由于先前的工作已经花费了很大的精力做为铺垫,也不想从头开始了,那先说人类(Product 产品类)怎么改吧,好,有了,给每
2015-08-19 22:33:22 1648
原创 设计模式实例(Lua)笔记之一(Factory Method工厂方法模式)
1.描述 女娲补天的故事大家都听说过吧,今天不说这个,说女娲创造人的故事,可不是“造人”的工作,这个词被现代人滥用了。这个故事是说,女娲在补了天后,下到凡间一看,哇塞,风景太优美了,天空是湛蓝的,水是清澈的,空气是清新的,太美丽了,然后就待时间长了就有点寂寞了,没有动物,这些看的到都是静态的东西呀,怎么办?别忘了是神仙呀,没有办不到的事情,于是女娲就架起了八卦炉(技术术语:建立工厂)开始创建
2015-08-19 22:25:34 2151
原创 我所理解cocos2d-x 3.6 lua --使用Cocos Studio
Cocos是触控科技推出的游戏开发一站式解决方案,包含了从新建立项、游戏制作、到打包上线的全套流程。开发者可以通过cocos快速生成代码、编辑资源和动画,最终输出适合于多个平台的游戏产品。 Cocos的主要产品有Cocos Studio、Cocos2d-x(Cocos Framework)、Cocos Code IDE。 Cocos Studio:是Cocos2d-x引擎配套的跨平台游戏开发工具
2015-08-01 18:07:09 6543 2
原创 Lua代码编写规范
Lua代码编写规范 开发中,大量使用lua,暂时根据当前状况,总结相对而言较好的规范,在多人协作中可以更好的开发、交流。 介绍 该文档旨在为使用lua编写应用程序建立编码指南。 制订编码规范的目的: 统一编码标准,通用,提高开发效率; 使代码通俗易懂,易于维护。 切记:善用调试器。 一、 命名惯例 1.所有lua文件命名时使用小写字母、下划线2.类名、变量名尽可能使用有意义的英文,类名使用帕斯卡
2015-07-23 22:04:26 11553
原创 我所理解cocos2d-x 3.6 lua -- Cocos如何绑定Lua自定义类
cocos2d-x 2.x 与 cocos2d-x 3.x 差异(tolua++) cocos2d-x在2.x版本里就是用toLua++和.pkg文件这么把自己注册进Lua环境里的,然而从cocos2d-x 3.x开始,用bindings-generator脚本代替了toLua++。 bindings-generator脚本的工作机制是: 1、不用编写.pkg和.h文件了
2015-06-18 22:56:51 9461
原创 我所理解cocos2d-x 3.6 lua -- 初识MVC
简单说几句: 最近的游戏项目中使用了lua脚本来开发,项目中用到了MVC框架. 从cocos2d-x 3.6 创建lua demo, 简单分享一下思路和一些开发中的技巧。先简单说说MVC,即Model View Controller。Model(模型):一般负责数据的处理View(视图):一般负责界面的显示Controller(控制器):一般负责前端的逻辑处理比如 :拿一款手机游戏来说,界面
2015-06-18 18:13:00 9744 9
原创 我所理解lua 语言中的点、冒号与self
lua编程中,经常遇到函数的定义和调用,有时候用点号调用,有时候用冒号调用,这里简单的说明一下原理。如:点号调用:-- 点号定义和点号调用:girl = {money = 200}function girl.goToMarket(girl ,someMoney) girl.money = girl.money - someMoneyendgirl.goToMarket(girl ,1
2015-06-18 11:37:15 3723
原创 Lua中的模块与module函数
这篇文章主要介绍了Lua中的模块(module)和包(package)详解,本文讲解了require函数、写一个模块、package.loaded、module函数等内容. 从Lua5.1版本开始,就对模块和包添加了新的支持,可是使用require和module来定义和使用模块和包。require用于使用模块,module用于创建模块。简单的说,一个模块就是一个程序库,可以通过require
2015-06-13 15:57:10 8224
原创 Cocos2d-x使用Luajit实现加密
项目要求对lua脚本进行加密,查了一下相关的资料 ,得知lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密,试了一下,确实可行。下面是使用原生的lua解释器编译字节码: 1、新建一个名为1.lua的文件,里面只有一句话print("Hello Lua"),新建一个空的out.lua脚本文件 2、开始--运行--cmd3、luac -o out.lua 1.lu
2015-01-31 17:07:15 2778
原创 lua 函数回调技巧
技巧1:local a = {};function b() print("Hello World")enda["sell"] = {callFunc =b}a["sell"].callFunc()技巧2: 使用lua 自带的 unpack : 解释:把一直数组(只有连续数字下标的 table)展开成一串返回值,但是对用字符串或别的东西做 key 的 table 无能为力。fu
2014-11-14 14:32:54 4521
原创 Lua中的元表与元方法
前言Lua中每个值都可具有元表。 元表是普通的Lua表,定义了原始值在某些特定操作下的行为。你可通过在值的原表中设置特定的字段来改变作用于该值的操作的某些行为特征。例如,当数字值作为加法的操作数时,Lua检查其元表中的"__add"字段是否有个函数。如果有,Lua调用它执行加法。我们称元表中的键为事件(event),称值为元方法(metamethod)。前述例子中的事件是"add",元方法是执行加
2014-10-23 22:36:48 2070
原创 VS2012 [warning C4996]: 'sprintf': This function or variable may be unsafe.
使用VS2012编译时,会出现以下警告:warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for detail
2014-10-20 21:14:20 2970
原创 关于cocos2d-x3.0和2.0之间的区别
区别1.去CC之前2.0的CC**,把CC都去掉,基本的元素都是保留的2.0CCSprite CCCallFunc CCNode ..3.0Sprite CallFunc Node ..区别2.cc***结构体改变2.0 ccp(x,y) ccpAdd(p1,p2)ccpSubccpMultccpLength(p)ccpDot(p1,p2);ccc
2014-10-08 19:20:31 3789
原创 cocos2dx3.2 android平台搭建开发环境纠错备忘录
平台:win32 + androidcocos2d版本:3.2搭建cocos2d-x android 常见问题:问题1: Android platform not specified, searching a default one...Can't find right android-platform for project :"F:\cocos2d-x-3.1.1\tests\cpp
2014-09-29 20:56:37 7676 1
原创 cocos2d-x lua 学习笔记(1) -- 环境搭建
Cocos2d-x 3.0以上版本的环境搭建和之前的Cocos2d-x 2.0 版差异较大的,同时从Cocos2d-x 3.0项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后,以后就会非常快捷!OK,现在就开始搭建环境吧!1.cocos2d-x环境的设置以及android的环境搭建1、下载cocos2d-x 3.0正式版 2、下载android的sdk以及ndk
2014-09-29 15:28:52 4461
原创 cocos2d-x -- 渠道SDK【棱镜】接入(2)
上一章《cocos2d-x -- 渠道SDK【棱镜】接入(1)》,已经接入好了SDK,现在添加渠道了,以豌豆荚为例。具体流程:1.添加渠道:2.输入安全密钥、appKey_id.3.获得相应回调地址:4.配置回调地址:就这么简单,这样就接入好渠道了,具体怎么运营,就让运营部分去负责吧。^^
2014-09-03 20:16:52 2354
原创 cocos2d-x -- 渠道SDK【棱镜】接入(1)
棱镜SDK简介 若想让游戏上线,渠道接入步骤是必不可少的,为了避免一对一接入渠道问题,我选择了棱镜SDK,因为棱镜是游戏与渠道SDK的中间层,为CP厂商屏蔽各个渠道SDK之间的差异,整个接入过程,不会改变各个渠道SDK的功能、特性、参数等,对玩家完全透明。 棱镜平台基本工作原理:http://dev.ljsdk.com/ljdocs/lj_principle.html 棱镜技术接
2014-09-03 19:23:48 4041 2
原创 lua 如何输出树状结构的table?
为了让游戏前端数据输出更加条理,做了一个简单树状结构来打印数据。ccmlog.lualocal function __tostring(value, indent, vmap) local str = '' indent = indent or '' vmap = vmap or {} --递归结束条件 if (type(value) ~= 'table')
2014-08-13 22:39:26 3495
原创 Lua 常用数据结构
Lua中的table不是一种简单的数据结构,它可以作为其它数据结构的基础。如数组、记录、线性表、队列和集合等,在Lua中都可以通过table来表示。 一、数组 在lua中通过整数下标访问表中的元素即可简单的实现数组。并且数组不必事先指定大小,大小可以随需要动态的增长。a = {}for i = 1,100 do a[i] = 0endprint("The length of arra
2014-08-13 17:50:56 11175
原创 cocos2d-x学习日志(18) --程序是如何开始运行与结束?
问题的由来 怎么样使用 Cocos2d-x 快速开发游戏,方法很简单,你可以看看其自带的例程,或者从网上搜索教程,运行起第一个HelloWorld,然后在 HelloWorld 里面写相关逻辑代码,添加我们的层、精灵等 ~ 我们并不一定需要知道 Cocos2d-x 是如何运行或者在各种平台之上运行,也不用知道 Cocos2d-x 的游戏是如何运行起来的,它又是如何渲染界面的 ~~~两个入
2014-06-10 12:16:05 3538 2
原创 VS2010版快捷键
VS2010版快捷键Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O打开项目 CTRL + SHIFT + C显示类视图窗口 F4 显示属性窗口 SHIFT + F4显示项目属性窗口 CTRL + SHIFT + E显示资源视
2014-05-19 17:11:49 1503
原创 Lua中调用C函数(lua-5.2.3)
Lua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性。 对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数。 对于那些可被Lua调用的C函数而言,其接口必须遵循Lua要求的形式,即typedef int (*lua_CFunction)(lua_State* L)。 简单说明一下,该函数类
2014-05-19 12:13:01 2502 2
原创 VS2010编译Lua程序(lua-5.2.3)
编译静态链接库 1.下载Lua源码 下载后解压到一个目录下,这里假设解压到D:\win32Lua 注意下载的版本,如果是5.2.x,后面代码中的C API发生了改变 2)在VS2010中新建一个静态库项目,项目命名为lua a 选择新建 Win32 console project b 在wizard界面选择 static Library;不选择Pre
2014-05-17 21:07:17 2443
原创 LUA IO库
I/O库为文件操作提供两种模式。简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。完全模式(complete model)使用外部的文件句柄来实现。简单模式 I/O库将当前输入文件作为标准输入(stdin),将当前输出文件作为标准输出(stdout)。这样当我们执行io.read,就是在标准输入中读取一行。写操作较读操作简单,我们先
2014-05-14 22:40:56 3389
Snapdragon Profiler v2022.5
2023-03-24
Objective-C程序设计(第6版带中文目录 )
2019-07-19
More Effective c# 清晰版
2018-11-03
cocos2d-x游戏实例 萝莉快跑
2013-10-28
OPenGL ES 模板
2013-09-25
Android SDK 中文开发文档
2012-12-06
Android2.0游戏开发实践宝典源代码
2012-12-05
Erlang程序设计中文版
2012-10-09
Erlang安装手册
2012-10-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人