自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 Unity3D —— Coroutine

线程(Thread):协程(Coroutine):Coroutine在主线程上执行;Coroutine的生命周期是和它所在的MonoBehaviour绑定在一起的。你如果把MonoBehaviour的对象Destroy或者SetActive(false)的时候,Coroutine就不会执行了。Unity为我们提供的不同的YieldInsturction.null 等待到下...

2020-04-08 13:27:34 151

原创 Unity 生命周期(Unity 5.6)

MonoBehaviour是一个基类,所有Unity脚本都派生自该类。 Awake():只调用一次,在脚本实例化时被调用。一般用于字段初始化和创建对象。 Start():在Awake之后,Update之前调用 Update():每一帧都调用(不同环境频率不同) LateUpdate():在Update之后调用(一般用于摄像机跟随) FixedUpdat...

2020-04-01 20:28:36 238

原创 Unity3D 本地数据持久化记录存储

第一种 Unity自身提供的PlayerPrefs描述:(1)存储机制:Key-Value (类似于字典的键值对,通过键值索引到相应数据)(2)可存储变量类型: int, float,string//保存数据PlayerPrefs.SetString("Name",mName);PlayerPrefs.SetInt("Age",mAge);PlayerPrefs.Se...

2020-03-24 16:31:22 1184

原创 (五)Lua 模块与包

(1)有利于代码的重用,降低代码耦合度;(2)由变量,函数等组成;(3)实际上就是个 Table;(4)使用关键字 require 来加载模块;--第一步:先创建一个表module = {}--第二步:把需要导出的常量、函数放入其中module.constant = "这是一个测试常量"function module.func1() print("这是一个...

2020-03-09 20:04:52 130

原创 (四)Lua Table

(1)可以用任意类型的值来作数组的索引,但这个值不能是 nil;(2)table 是不固定大小的,可根据需要自由扩容;(3)Table 的操作:操作 使用 连接 table.concat (table [, sep [, start [, end]]]); 插入 table.insert (table, [pos,] value); 删除...

2020-03-09 19:53:13 120

原创 (三)Lua 循环

(1)Lua 中有三种处理方式:循环类型 描述 while 循环 执行语句前会先检查条件是否为 true,为 true 时执行; for 循环 (1)数值 for 循环; forindex = from , to , steps do ... end (2)泛型 for 循环; for i, v in ipairs(array) ...

2020-03-09 18:19:12 451

原创 (二)Lua 变量

(1)Lua 变量有3种类型:全局变量、局部变量(local)、表中的域;(2)变量在使用前,必须进行声明;(3)变量的默认值都为nil;(4)Lua可以对多个变量同时赋值,变量列表和值列表需要用逗号隔开;local a , b ,c = 0 , 1 print(a,b,c)-------------------------------(a)变量个数 > 值的个数...

2020-03-09 18:04:13 636

原创 (一)Lua 数据类型

(1)Lua是动态类型语言,变量不需要定义类型。(2)Lua中有8个基本数据类型:数据类型 描述 nil (a)没有任何有效值; (b)给全局变量或 table 里面的变量赋值,表示删除; boolean (a)包含两个值:false 和 true; (b)Lua中 false 和 nil 看作是 false,其他的都为 t...

2020-03-09 17:52:35 123

原创 Lua 面向对象(class)

(一)class() 定义纯 Lua 类基类:--定义一个名为 Shape 的基础类local Shape = class("Shape") --这是一个纯Lua类--ctor()是类的构造函数,在调用Shape.new()创建Shape对象实例时自动调用function Shape:ctor( shapeName ) self.shapeName = shapeN...

2020-03-04 17:07:07 1550 1

原创 Unity3D UGUI — Dropdown(下拉列表框)

ZAN

2019-12-27 15:22:48 880

原创 Unity3D UGUI — Slider(滑动条)

zan

2019-12-27 15:21:26 568

原创 Unity3D UGUI — Toggle(开关/切换)

ZAN

2019-12-27 15:20:46 2046

原创 Unity3D UGUI — Text(文本)

ZAN

2019-12-27 15:20:09 1006

原创 Unity3D UGUI — Button(按钮)

ZAN

2019-12-27 15:19:39 651

原创 Unity3D UGUI — RawImage(纹理)

ZAN

2019-12-27 15:18:53 595

原创 Unity3D UGUI — Canvas(画布)

ZAN

2019-12-27 15:16:34 566

原创 Unity3D UGUI — Image(图片)

ZAN

2019-12-27 15:03:24 328

原创 Unity3D 基础类 — Transfrom类

(一)作用:主要用于描述物体的位置、旋转、移动、缩放。注意:每个物体都有一个Transfrom组件。 Transfrom组件的所有属性都是相对其父物体进行衡量的,如果此物体没有父物体,这些属性则相对于世界坐标进行计算。(二)获取方式:先获取 GameObject ,然后再获取 transform;GameObject a = GameObject.Find()—>a.tr...

2019-12-27 14:51:22 522

原创 Unity3D —— 碰撞检测

(一)两种碰撞检测方式(1)Collider:碰撞器➜需要与刚体一起添加到游戏对象上才能触发碰撞,没有碰撞体的刚体会彼此相互穿过。(2)Trigger:触发器➜只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框;注意:Collision是用来刚体的碰撞,而Collider是用来碰撞器的碰撞。其中,Collider含于Collision内。(二)碰撞器与触发器的...

2019-12-19 18:49:14 3314

原创 Unity3D —— 刚体

(一)定义刚体:用来模拟GameObject对象在现实世界中的物理特性,包括重力,阻力,质量,速度等;(二)组件参数介绍Mass:质量,单位为Kg;Drag:空气阻力,0表示没有阻力,infinity表示立即停止移动;Angular Drag:角阻力,物体扭矩运动时的阻力(用来阻碍物体旋转);Use Gravity:是否使用重力;(只有在Is Kinematic为 f...

2019-12-19 18:07:06 739

原创 Unity3D —— 延迟执行

(一)Invoke / InvokeRepeatingInvoke("CallFunc", 5f);// 5秒之后调用 CallFunc() 方法注意:(a)gameObject存在, 且gameObject.SetActive(true);(b)被调用的位置为脚本生命周期中Start()、Update()、OnGUI()、FixedUpdate()、LateUpdate();...

2019-12-18 17:10:38 1912

转载 Unity3D —— 移动

目录(一)通过Transform组件移动物体(二)通过Rigidbody组件移动物体(三)通过CharacterController组件移动物体(一)通过Transform组件移动物体Transform.positionTransform 组件用于描述物体在空间中的状态,它包括 位置(position),旋转(rotation),缩放(scale)。可直接操作Transf...

2019-12-09 18:47:09 195

原创 Unity3D —— 坐标系

四种坐标系:(一)World Space(世界坐标系)在场景中添加的物体(如:Cube)都是以世界坐标显示在场景中的。获得GameObject世界坐标的接口为Transform.position 。获得GameObject局部坐标系的接口为Transform.localPosition。世界坐标转化为屏幕坐标Camera.WorldToScreenPoint世界坐标转...

2019-12-09 17:07:14 191

原创 Unity3D GameObject和Tansform的区别

Gameobject:是一个类型,所有的游戏物件统称;gameobject :是一个对象,当前游戏对象的实例;Transform:是一个类,用来描述物体的位置,大小,旋转等等信息;transform :是一个对象,当前游戏对象的transform组件;gameobject.transform : 获取当前游戏对象的transform组件;(gameobject.t...

2019-12-05 17:02:22 408

原创 Unity Editor 学习(三)ScriptableObject

(一)ScriptableObject 是什么?继承自UnityEngine.Object且字段能被序列化的类(Unity中用于处理序列化的,能够生成单独Asset结构的资源文件;)Unity内部的Asset (Material 或者 AnimationClip 等) 都是从 UnityEngine.Object 衍生出来的。为了制作单独的Asset,需要制作UnityEngine.Ob...

2019-08-06 17:38:21 505

原创 Unity序列化 Serializable 和 SerializeField

Serialize序列化功能:Unity3D 中提供了非常方便的功能可以帮助用户将成员变量在Inspector中显示,并且定义Serialize关系;简单的说,在没有自定义Inspector的情况下所有显示在Inspector 中的属性都同时具有Serialize功能;换句话说,就是你在Inspector看到什么,保存游戏的时候,这些值就会被保存成二进制文件;Serializa...

2019-08-06 16:47:57 2072

转载 C# Partial

Partial是局部类型的意思。允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。C#编译器在编译的时候仍会将各个部分的局部类型合并成一个完整的类。适用范围:(1)类型特别大,不适合放在一个文件中实现。(2) 一个类型中的一部分代码为自动化工具生成的代码,不宜与我们自己编写的代码混合在一起。(如设计模式中的“模板方法”。模板方法就是把所有相同功能都写在父类中,...

2019-08-06 10:35:15 644

转载 Unity Editor 学习(二)自定义Inspector面板

设置界面垂直布局: EditorGUILayout.BeginVertical(); EditorGUILayout.EndVertical(); 设置界面水平布局: EditorGUILayout.BeginHorizontal(); EditorGUILayout.EndHorizontal(); 滑块: EditorGUILayout...

2019-08-05 17:53:18 322

转载 Unity Editor 学习(一) Attribute

Attribute属于RunTimeClass 所以需要加上命名空间:using UnityEngine;using System.Collections;AddComponentMenu();将一个脚本添加到Component菜单中 RequireComponent();自动为游戏物体添加组件 ContextMenu() / ContextMenuItem();添加命令 Hel...

2019-08-05 16:19:51 236

原创 UnityEditor研究学习之EditorWindow

EditorWindow类在UnityEdior下,所以要using UnityEditor;using UnityEngine;using System.Collections;using UnityEditor;public class TaskWindow:EditorWindow //窗口类型,一定要继承自EditorWindow{ [MenuItem("Windo...

2019-08-05 15:27:09 173

原创 cocos2dx 纹理缓存

缓存(cache)机制的原理是什么?    把新加进内存的资源做一个hashmap存储,每一个资源加一个key。每次加载资源,先从缓存中寻找,如果找到就直接返回,否则加载到内存后再返回。一、自动缓存纹理直接使用display.newSprite(fileName)创建精灵,引擎内部会自动把纹理加载到缓存中二、手动缓存纹理(1)首先,需要获取引擎的纹理缓存实例local textureCache =...

2018-04-11 15:33:10 881

原创 cocos2dx 内存管理

方法一:引用计数(Reference Count)cocos2dx采用的就是引用计数机制,引擎中抽象了一个基类Ref,需要引用计数管理的类都会public Ref继承这个类。Ref的实例包含一个计数器,当新建一个Ref实例的时候,计数器初始化为1,同时Ref提供了修改计数器的接口:(1)Ref::retain() --计数器加1(2)Ref::release() --计数器减1,假如减1后计数为0...

2018-04-11 15:01:45 254

原创 UserDefault 存储数据

UserDefault 是Cocos2d-x引擎提供的持久化方案,存储所有游戏通用的用户配置信息(例如音乐和音效配置)本质是一个XML文件,它将每个键值对以节点的形式存储在外存中。cocos2dx 3.2 的UserDefault在项目 cocos2d\cocos\base 路径下有:CCUserDefault.cpp -> 除IOS,MAC,Android之外的其他平台调用文件 ->...

2018-04-11 14:31:03 725

原创 Cocos2dx 场景切换 pushScene&popScene、replaceScene

2018-04-10 21:26:40 1411

原创 cocos2dx 引擎渲染流程

cocos3.x版本的渲染是将所有需要渲染的node先通过各种RenderCommand封装起来,然后引擎将这些RenderCommand添加到一个队列中存了起来,这个队列叫CommandQueue;渲染前根据ID对RenderCommand进行排序,然后再进行渲染,整个渲染流程就是在CCApplication类文件run()方法中开始的cocos2dx整个工程是运行在一个单线程里的,也就是我们通...

2018-04-10 18:49:18 1868

原创 cocos2dx 程序的结束流程

程序运行期间,由mainLoop方法维持运行着游戏之内的各个逻辑,当在弹出最后一个场景,或直接调用CCDirector::end()方法之后,触发游戏的清理工作,执行PurgeDirector()方法,从而结束了CCEGLView运行(注意:不同平台不同封装,PC端使用OpenGL封装,移动端使用OpenGLES封装),调用End()方法,从而直接执行exit(0),退出游戏进程,从而结束整个程序...

2018-04-10 17:44:05 1143

原创 cocos2dx 如何实现跨平台?

Linux和Android平台cocos2dx程序的入口都是在main.cpp中实现的//Linux平台关键代码int main(int argc,char *argv){    AppDelegate app;    return Application::getInstance()->run();}//Android平台关键代码void cocos_android_app_i...

2018-04-10 17:31:46 2484

原创 Lua 点调用和冒号调用的区别

object.func_name <==> object.func_name(arg1,arg2...)object:func_name <==> object:func_name(self,arg1,arg2...)点定义函数 ->需要显示传递或接收self冒号定义函数 -> 可以省略self参数(冒号的作用:定义时,给函数添加隐藏的第一个参数self;调用...

2018-04-10 16:33:30 1155

原创 以固定宽度填充ccui.Text,宽度不够时会截取并添加ending(...)

-- 以固定宽度填充ccui.Text,宽度不够时会截取并添加ending-- width可选,默认获取field的宽度-- ending可选,默认使用"..."function ViewUtil.fixedWidthText(field, str, width, ending)--控件、字符串、控件显示文本的宽度、以什么结尾 if type(width) ~= "number" t...

2018-04-10 16:13:28 305

原创 cocos2dx 粒子系统理解

1、粒子系统的原理:在引擎中存在一个粒子池,存放着待激活的粒子,发射器每次从粒子池中取出一个粒子,然后计算赋予粒子的初始属性(速度、大小、方向、生存时间等)后,将粒子发射出去,粒子被发射出去后,会不断地刷新来修正它的属性,当粒子的生存时间结束后,粒子就会死亡,然后重新被粒子池回收,等待下一次激活。2、粒子的主要属性:(a)duration 发射器生命时间,单位为秒,-1表示永久

2017-07-03 18:54:01 1698

空空如也

空空如也

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

TA关注的人

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