- 博客(46)
- 资源 (2)
- 收藏
- 关注
原创 Unity最简单引导实现方式
Unity最简单引导实现方式这是最基础的引导实现方式,具体逻辑根据自己项目来丰富。首先我们需要一个镂空需要高亮区域的Shader其次需要具体业务处理的C#代码镂空shader代码:Shader "UI/Guide/Rect"{ Properties { [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {} _Color("Tint", Color) = (1,1,1,1) _StencilComp("Sten
2021-04-16 16:40:00
961
1
原创 Flutter学习
主轴和辅轴在水平方向控件中,例如RowMainAxisAlignment是水平的,默认起始位置在左边,排列方向为从左至右,此时可以通过textDirection来改变MainAxisAlignment的起始位置和排列方向CrossAxisAlignment是垂直的,默认起始位置在中间,排列方向为从上至下,此时可以通过verticalDirection来改变CrossAxisAlignme...
2019-07-18 16:28:07
162
转载 Dart语言学习[转]
Dart数据类型运算符函数类库异步Stream数据类型浮点类型 doubleString //大写int a = 10;// 同c# $符号意思一样 不同的是要放在字符串内部String s1 = "可以用${a}";//字符串前加r 代表这是一个原始字符串String s1 = r"可以用${a}";dart 中所有类型都是对象 所有对象的默认值都是null如果变量的类...
2019-07-17 17:04:50
229
转载 Lod和MipMap
转载自:http://blog.csdn.net/penchaoo/article/details/54291529 MipMap与LOD是何物? LOD:模型金字塔 LOD:全称Level Of Detail,中文翻译“细节级别渐变”,顾名思义,不同的级别展示不同的细节,那么究竟这个技术是如何运用在游戏项目中的呢?通过例子我们来学习一下。关于为什么要使用这个技术,和游戏优化是密不可分的,使用
2017-12-18 17:54:44
826
转载 Unity3D粒子系统碰撞器,让粒子碰撞到物体之后消失
关于碰撞检测的主要配置我们看图中的Collision: 第一项:因为是一个3D游戏,所以这里我选择的是World 第二项(Dampen):抑制(0~1),选这个为1时(完全抑制),碰撞之后,阻止了粒子,可以使碰撞的粒子消失 第三项(Bounce):反弹(0~2),选完这个之后,可以让产生碰撞的粒子以某个角度反弹出去 第三项(Lifetime Loss):生命周期损失(0~1),碰撞之后让粒子
2017-11-24 10:35:12
5623
转载 Unity3D引擎之渲染技术系列
http://blog.csdn.net/jxw167/article/details/69426574 图片渲染模式
2017-09-21 23:04:34
780
原创 AStar算法
我们假设某人要从 A 点移动到 B 点,但是这两点之间被一堵墙隔开。如图 1 ,绿色是 A ,红色是 B ,中间蓝色是墙。图 1 我们把要搜寻的区域划分成了正方形的格子,目的是简化搜索区域,我们的搜索区域简化为了二维数组。数组的每一项代表一个格子,它的状态就是可走和不可走,通过计算出从 A 到 B需要走过哪些方格,就找到了路径。一旦路径找到了,人物便从一个方格的中心移动到另一个方格的中心,直至到达
2017-07-10 19:39:17
1238
转载 Lua中含中文字符串长度计算
转自:http://m.blog.csdn.net/DanceWithCode1990/article/details/51154681在项目中遇到了需要在Lua中计算含中文的字符串的字符串长度。当时想当然的就用了string.len(“确定”) 发现输出时竟然是6!后来才知道 ,由于文件编码格式是UTF-8,所以一个中文是3个字节!所以这也不难解释为何“确定”的长度是6了。 至于UTF-8的前世
2017-07-03 11:35:49
9648
2
原创 Socket框架
1.构建消息包类 MessagePackage <1> 定义包头 根据业务需求,这里有5种:// 构造包头用的数据(包头10个字节里的内容) public int bufferSize = 0;// 消息总长度 public int protocolId = 0;// 消息ID // 网络标记包用来标记消息是否压缩、加密等信息 比如:0表示无压缩 无加密 pu
2017-06-15 19:57:12
2096
原创 安卓SDK接入Unity
环境搭建: (1)需要安卓JDK,并配置环境变量。 (2)需要安卓SDK,放在本地,unity发布时需要调用。 (3)需要Eclipse,Java代码编写工具。实现步骤: (1)打开 Eclipse,建立一个 Android 空项目(File\New\AndrAPP Project) 注意Package Name 要 与unity bundle identifier一致 (2)创建新的
2017-06-12 22:12:44
1039
1
原创 Lua
直接上代码 简单易懂-- 是lua中的注释 相当于 // 字符串:1. 单引号表示的字符串里可包含双引号 但内部不能包含单引号2. 双引号表示的字符串里可以包含单引号 但内部不能包含双引号-- print("lua") -- a = 1-- b = 2-- print(a+b) -- 3 -- b = false-- n = 1-- s = 'lua'-- print(type(
2017-06-12 15:13:58
316
原创 Quaternion
结构体Quaternion 简单的说几个常见的用法:Quaternion q = Quaternion.identity;// 无旋转 print(gameObject.transform.eulerAngles);// 输出的是Vector 3 也就是Transform组件的rotation print(gameObject.transform.rotation)
2017-06-07 20:53:39
599
原创 AssetBundle加载
首先将资源打包 建一个工程 创建一个蓝色的cube 做成prefab 设置包名 结束 ab包名必须全小写 // 资源包 打包类 不同平台使用各自生成的.ab资源包 不同平台之间不通用 // 不同版本的unity 生成的AB文件或许是不通用的 建议使用相同版本打包并且发布 public class BuildBundle :MonoBehaviour {[MenuItem("BuildA
2017-06-06 15:13:01
341
原创 Unity中CS文件类头注释的编写实现
<1> 修改unity生成CS文件的模板 模板位置:Unity\Editor\Data\Resources\ScriptTemplates 文件名:81-C# Script-NewBehaviourScript.cs 本人将模板修改为如下:/**************************************************************** *Copyright
2017-06-01 17:37:34
1999
原创 有限状态机
FSM优势:简单高效 易于扩展 模块化处理 FSMState 抽象类 不继承mono 抽离一些子类共有的东西 例如:巡逻点 移动速度 旋转速度 追逐范围 攻击范围 等等 还有放一个存储转换过程的字典 公有方法:增加状态的方法 删除状态的方法 根据状态返回行为的方法 抽象状态转变的原因
2017-06-01 17:11:44
337
原创 高通Vuforia SDK AR
1.unity版本 5.4.3 2.Vuforial SDK 从官网(https://developer.vuforia.com/downloads/sdk)下载最新的5.5的Unity专用版本将下载的插件导入unity 3.注册vuforial账号 4.登陆后可在Develop –> License manager下添加一个License Key:添加成功后打开添加的License Key可
2017-05-26 19:11:43
831
原创 AssetBundle
1.unity5.4 打包API Buildpipeline.BuildAssetBundleBuildPipeline.BuildAssetBundles(outputPath, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);2.在资源的Inspector界面最下方可设置该资源的assetbundleName,每个ass
2017-05-24 14:02:54
331
转载 优化
http://www.cnblogs.com/murongxiaopifu/p/4284988.html 深入浅出聊优化:从Draw Calls到GCCPU优化1.DrawCall优化2.物理组件3.GC4.代码质量GPU优化1.填充率,可以简单的理解为图形处理单元每秒渲染的像素数量。2.像素的复杂度,比如动态阴影,光照,复杂的shader等等3.几何体的复杂度(顶点数量)4.当然还有GPU的显存
2017-05-24 14:02:51
271
转载 Stream
简单介绍一下MemoryStreamMemoryStream是内存流,为系统内存提供读写操作,由于MemoryStream是通过无符号字节数组组成的,可以说MemoryStream的性能可以算比较出色,所以它担当起了一些其他流进行数据交换时的中间工作,同时可降低应用程序中对临时缓冲区和临时文件的需要,其实MemoryStream的重要性不亚于FileStream,在很多场合我们必须使用它来提高性能
2017-05-24 14:02:49
207
原创 序列化和反序列化
proto序列化和反序列化类 序列化是将我们的protobuf类对象转换成字节数组的方法网络底层我们从服务器获取到的是字节数组 反序列化是将字节转成proto类对象的方法using语句的作用是:在语句里面定义的对象 在语句块结束的时候 会自动释放对象序列化 将前端的业务转换成字节public static byte[] Serialize(IExtensible msg) {byte[] resu
2017-05-24 14:02:46
317
原创 Protocol Buffer
目前市面上的unity手游开发主流数据通讯协议的解决方案。数据通讯格式。protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,因此比传统的 XML表示高效短小得多。虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自 动生成相关的类,可以支持java、c++、p
2017-05-24 14:02:43
317
原创 unity几个路径以及热更新原理
1.Resources 路径 只读 不能动态的修改 存放内容 预制体(prefabs) - 不容易变化的预制体 prefabs打包的时候 会自动过滤不需要的资源 有利于减小资源大小 主线程加载 Resources类的Load方法 文件夹中的内容打包的时候会被压缩和加密2.streamingAssetsPath 内容会原封不动的打入包中 一般建议存放一些二进制文件 (配置文件,unity资源包(AB
2017-05-24 14:02:40
1589
原创 消息系统
public static class M_EventSystem {public delegate void SendValueHandle(string str);// 参数基本类型 对象 List等public static event SendValueHandle sendvalue;// 发起调用委托的方法(广播的发起)public static void RaiseSendValue
2017-05-24 14:02:37
236
原创 匿名委托Lambda表达式
// 2种形式都是声明委托的形式// 2.0以前 C# 命名方法是声明委托的唯一方法 C# 2.0 之后引入匿名方法// C#3.0以及更高版本中 使用Lambda表达式 取代了匿名方法 作为编写内联代码的首选方式// 匿名方法delegate void Anonymity(int x);Anonymity m_anonymity = delegate (int x) { Debug.Log("
2017-05-24 14:02:34
266
原创 线程协程WWW
线程:Thread// 新线程-1 调用静态方法Thread m_Thread_1 = new Thread(M_Thread.StartThreadFunc);m_Thread_1.Start();// 开始执行新线程// 新线程-2 调用实例方法Thread m_Thread_2 = new Thread(new M_Thread().OtherThreadFunc);m_Thread_2.S
2017-05-24 14:02:31
238
原创 unity小技巧
1.同时按下Ctrl 键 和鼠标左键弹出预览窗口。 来自新浪微博:雨松MOMO2.被忽略的注释// TODO打开vs的视图 - 任务列表 就会发现如果程序中有 // TODO注释的地方都会被列出来。3.调整游戏测试运行模式的颜色Edit - Preferences - Colors - Playmode tint播放模式警示,解决粗心大意在播放模式中修改组件参数等。持续收藏中.....
2017-05-24 14:02:29
625
原创 数据存储
PlayerPrefs// 保存玩家数据PlayerPrefs.SetString(LoginName, _nameInput.text);PlayerPrefs.SetInt(Password, int.Parse(_passwordInput.text));PlayerPrefs.SetFloat(AudioKey, _audioSlider.value);// 从玩家偏好设置中获取key对应
2017-05-24 14:02:26
308
原创 Partical
Duration - 粒子持续时间Looping - 循环Prewarm - 预热Start Delay - 预热延迟Start Lifetime - 生命周期Start Speed - 发射初始速度Start Size(3d) - 粒子大小Start Color - 粒子初始颜色Gravity Modifier - 重力修正 (重力大小)Max Particals - 粒子最大释放数量Emiss
2017-05-24 14:02:23
1341
原创 Animation
//旧版动画系统//在导入的FBX文件选中, 在Inspector视窗中有 三个标签选项 model Rig Animation 选择 Rig标签,//Animation Type 中选择Legacy(旧的Animation)动画系统。//Apply后将FBX文件拖动到 场景视窗中,模型预制体会自动自动携带Animation组件。//新版动画系统//Animation Type 中选择Gener
2017-05-24 14:02:20
483
原创 一些String的方法
String 字符串String类型表示一个字符序列(数组)。string 是.NET Framework中Sting中的别名。str [index] 只读 不允许修改1.静态创建(字面量)创建方式 string str = “字符串”;2.格式化创建字符串 string.Format(format,arg0,arg1....)String str = string.Format(“{0},{1}
2017-05-24 14:02:17
320
原创 UGUI
TextRich Text 是否支持富文本 (Rich Text Format)RTF是微软公司开发的跨平台文档格式unityBest Fit 是否自动匹配字体大小Raycast Target 是否被射线检测http://blog.csdn.net/qq_26999509/article/details/53391808 Text组件详解Darwcall - Batches 200 左右1.
2017-05-24 14:02:08
158
原创 物理引擎
Rigidbody 刚体Use Gravity 是否使用重力Is Kinematic 是否使用动力学Coliision Detection 碰撞检测类型 - continuous 连续碰撞检测 continuous dynamic 动态连续碰撞检测Interpolate 插值 - interpolate 内插值 基于上一帧变换来平滑本帧 extrapolate 外插值 基于下一帧预估变换来平滑本帧
2017-05-24 14:02:02
226
原创 射线
public GameObject _player;bool isMove = false;Vector3 _moveTarget;public float _speed = 1f;void Update () {if (Input.GetMouseButtonDown(0)) {// 从摄像机发射一条经过鼠标当前位置的射线 用射线接收Ray ray = Camera.main.ScreenPoi
2017-05-24 14:01:59
212
原创 transform input
Transform组件变量Position世界坐标系的位置Localtion相对于父物体的位置enlerAngles欧拉角 旋转角度Rotation四元数Parent物体父物体的transform组件Root物体最高层次父物体的transform组件设置父物体的方法1.Instantiate(gameObject,父物体.transform)2.If(父物体!= null)gameObject.t
2017-05-24 14:01:56
542
原创 unity入门
Unity1.提供了给开发人员操作的界面2.提供了给技术开发人员实现功能的API --SVN预制体Resource资源 一个固定路径 一个类Config配置文件Z轴 蓝色 正前Y轴 上下X轴 左右Center localAssets:存放项目所需要的资源Library:存放所需库文件ProjectSettings:里面存放工程设置文件Temp:临时文件Transform1.负责游戏对象变换(位
2017-05-24 14:01:53
212
原创 委托和事件
委托委托是一个类,它定义了方法的类型,使得方法可以当做另一种方法的参数传递,就是方法的参数是一个委托变量,在调用此方法时,就可以把一个方法作为参数传递给委托变量。1.创建委托访问修饰符 delegate 返回值类型 委托名(参数列表); 没有大括号2.委托赋值 委托名 委托变量 = 方法名; 没有大小括号这个方法的参数和返回值类型 必须要和委托类型一致。3.使用委托委托变量(参数列表);静态方法和
2017-05-24 14:01:50
252
原创 集合
ArrayList是一个特殊的数组。通过添加和删除元素,就可以动态改变数组的长度。ArrayList并不是强类型,ArrayList 可能并不总是提供特定任务的最佳性能。特点:1.支持自动改变大小的功能。2.可以灵活的插入元素、删除元素、访问元素。3.不是强类型,速度跟数组比起来要慢。List类表示可通过索引访问的对象的强类型列表。 提供用于对列表进行搜索、排序和操作的方法。List是ArrayL
2017-05-24 14:01:47
178
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人