自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

koo叔的博客

专注游戏开发,关注科技前沿

  • 博客(59)
  • 收藏
  • 关注

原创 旋转数组

题目给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4] 示例 2:输入: [-1,-...

2018-08-29 21:22:17 508

原创 买卖股票的最佳时机 II

题目买卖股票的最佳时机 II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天...

2018-08-29 21:20:28 310

原创 LeetCode之从排序数组中删除重复项

题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 示例...

2018-08-22 23:10:28 294

原创 Unity中MenuItem可以加的快捷键

前言在Unity开发中,往往要加一些自定义的编辑器脚本或命令,在Unity菜单中执行,对于经常使用的自定义命令,每次用鼠标去选中比较麻烦,那可以加快捷键来提高效率自定义菜单支持如下几种快捷键:% - CTRL on Windows / CMD on OSX‘# - Shift’& -AltLEFT/RIGHT/UP/DOWN - Arrow keysF1 … F2...

2018-08-10 16:07:26 5277 1

原创 基本光照模型公式

光照模型3D渲染中, 物体表面的光照计算公式为:I = 环境光(Iambient) + 漫反射光(Idiffuse) + 镜面高光(Ispecular);其中,环境光(ambient)计算公式为:Iambient = Aintensity * Acolor ; (Aintensity表示环境光强度,Acolor表示环境光颜色)漫反射光(diffuse)计...

2018-07-31 08:56:21 5513

原创 Koo叔说Shader-调试Shader

前言当写的Shader出现了一些不是预期的效果时,可能需要对Shader进行调试。但Shader不像其它语言能加断点debug,也不能打印输出。输出的只能是颜色值,所以可以将想要看的变量变换成颜色值,可视化的来查看问题,当然这需要一些小小的转换。顶点数据从哪里来一般对Shader调试,主要是调试顶点数据及变换,那么顶点数据是如何设置到Shader中的呢?在Unity中,是由Mesh...

2018-07-25 09:03:16 2215

原创 Koo叔说Shader-描边效果

前言描边效果,在游戏中比较常见,实现方式也有好多种,今天主要讲一下比较容易理解的一种,需要用到两个pass实现。描边效果先看效果: 这个描边效果比较简单,这个动的贴图是屏幕空间计算的,顺便也说说屏幕空间计算。原理分析利用两个pass,第一个pass先画比模型大一圈的填充,第二个pass正常画贴图屏幕空间是取屏幕空间的点来实现一些特殊效果具体实现S...

2018-07-17 23:32:11 1547 1

原创 Koo叔说Shader-贴图切换

前言再介绍一个简单的效果,贴图切换,根据目标距离远近切换贴图贴图切换先看效果 随着小黄鸭的移动,贴图以小黄鸭中心为半径变化。这个方法可以做出许多效果,如放大镜效果,画圆形遮罩等原理分析主要就是根据提供的目标点(也就是小黄鸭的中心点)和贴图的距离进行不同的采样具体实现Shader "Unlit/TextureSwitch"{ Propert...

2018-07-05 23:36:25 545

原创 Koo叔说Shader—UV旋转

前言本次依然是在顶点Shader中做一些操作,效果是旋转UV最终效果如下:原理分析,主要解决两个问题如何旋转:通过构造旋转矩阵旋转的中心点,如何定位:可以先将中心点移到中间,旋转完再移回去旋转矩阵:M(a) = [cosa -sina] [sina cosa]具体实现Shader "Unlit/UV rotation"{...

2018-06-26 13:13:04 3334 1

原创 Koo叔说Shader—果冻效果

前言之前新建了一个Shader项目,并实现了一个基本的Shader结构,这次基于顶点变化,实现一个小的里冻效果。最终效果如下:原理分析这个效果只是对顶点位置的一个移动,并没有对显示做处理,所以只需要vertex Shader中实现就可以这个效果是周期性变化,很容易想到使用正弦波和余弦波来处理,也是物理上所说的简谐运动。正弦波的关键值sin{0=>0,90=&gt...

2018-06-24 22:44:57 5200

原创 Koo叔说Shader—最基本的Shader

写在前面看了许多Shader教程,也学到了一些常见的Shader效果,但还是有一些迷糊,不能灵活的运用。所以打算一步步从零开始,把Shader彻底搞明白。以此记录一下学习过程。Shader效果单个对象正确渲染出对象将对象设置成黄色(为啥是黄色,随便选的颜色:-))思路这里选择Quad作为渲染对象,顶点组成比较简单要正确显示出Quad,需要将顶点位置告诉GPU...

2018-06-20 17:12:41 2521

原创 Koo叔说Shader-- 熟悉渲染管线

前言前面几篇文章对Shader及CG语言做了大概的介绍,算是为了编写Shader做的前期准备,但在真正写之前还是有必要把渲染管线再详细说一下,这样在写Shader时,才能更加清晰明白每一步的意义渲染管线渲染管线主要是用于3D渲染,可以理解为一个流程,即CPU方面准备一些数据传给GPU,GPU对数据处理得出一张二维图像的过程。渲染流程主要分为几个大的阶段 - 数据准备阶段 - 顶...

2018-06-07 23:15:16 461

原创 Koo叔说Shader-CG语言介绍

前言开始着手写Unity Shader之前,有必要了解一下用什么语言来写,Unity支持自家的Surface Shaders,GLSL,Cg/HLSL这几种方式来写,经过比较决定使用Cg/HLSL来写,今天就来初步学习一下Cg/HLSL语言,为接下来的使用做准备。为什么Cg/HLSL是最佳选择GLSL:Unity支持GLSL,这是OpenGL的Shader语言,在GLSLPROG...

2018-05-31 22:33:09 1064

原创 Koo叔说Shader-Unity中的Shader

前言Unity有自己的一套Shader系统,叫ShaderLab,今天主要说一下ShaderLab的语法和Unity中的几种不同种类的Shader的区别及使用场景,并分别做一些例子说明。什么是ShaderLabShaderLab 是Unity3d自己封装的一个调用CG/HLSL/GLSL的接口,如果熟悉CG/HLSL/GLSL中的一种,理解起来会比较容易一些。ShaderL...

2018-05-24 23:10:30 536

原创 Koo叔说Shader—Shader简介

前言Shader的介绍有很多,在这里,将从以下几个方面来介绍: - 什么是Shader - Shader的主要作用 - Shader的种类 - Shader的结构什么是ShaderShader的意思是着色器,是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行,语法类似C语言,有自己的编译器。编译,链接后,由CPU送入GPU中执行。Shader的执行入口也...

2018-05-17 22:16:39 1591 1

原创 Koo叔说Shader—开篇

开篇Shader在游戏开发中,占据着比较重要的地位,不仅在于现代图形API(如OpenGL,Direct3D,Metal等)都将Shader作为渲染流水线中的必须存在的一环,而且在游戏中的许多酷炫的特效,都能通过对Shader的灵活运用而实现出来,同时也能充分发挥显卡的特性及开发人员的创造力。 然而在实际开发中,好多程序员对Shader都一知半解,不能灵活运用,写出效率好的效果,所以特此开设...

2018-05-14 23:49:57 453

原创 Lua室验室之Unity热更设计

前言现在有许多Unity游戏都采用了热更新的方式更新内容,最普通的热更方式就是用lua脚本,那么在设计热更方式时,哪些内容需要用lua来写,哪写用C#来写?热更新如何架构?更新流程如何设计呢?哪些内容用lua来写一般来说凡是效率相关的(比如地图排序,寻路),平滑显示相关的(比如人物移动,头顶血条位置)都用c#写,凡是涉及到服务器通信,逻辑状态的,都在lua写。或是经常变动的逻辑,比...

2018-05-08 06:40:01 209

原创 Lua实验室之Coroutine

前言Lua做为一个小巧的可嵌入的语言,学习起来难度并不大,唯一一点需要花点时间掌握的就是Coroutine,本文就来说一下Coroutine相关的技术。什么是Coroutine协程从表面意思来看就是可以协同运行的函数,可以看成是一个用户态的线程,由客户自己调度,切换不需要陷入内核态,效率比较高。用户控制切换,自动保存上下文状态,切换之间可以通过参数通信,可用同步的方式实现异步。这是...

2018-05-02 23:44:43 399

原创 Lua室验室之Lua语言特色

lua 的优点就是小巧,核心代码不过一万几多行高效,可以调用 C 的共享库,就是抓来 C 代码,用 lua api 的命名改改,就可以直接使用 C 代码写的函数了。弱类型,这点在编程中很重要。Lua提供机制而不是规则,可以进行面向过程,面向对象或者函数式开发。支持coroutine协同程序...

2018-04-27 23:42:00 238

原创 Lua实验室之Lua语法

前言出于热更新的需要,越来越多的Unity游戏项目都采用了Lua做为热更脚本,先不说众多的lua热更解决方案,也不说lua与unity如何结合及最佳实践,本文先主要介绍一下Lua的语法及自身特点:什么是Lua借用Lua官网介绍的一句:Lua是一个强大的,高效的,轻量的嵌入式脚本语言。支持过程编程,面向对象编程,函数式编程,数据驱动编程和数据描述。设计目的其设计目的是为了...

2018-04-27 23:32:34 815

原创 Unity实验室之C#调用Lua脚本

介绍xLua是腾讯在github上的一个开源项目(下载链接),主要解决热更的问题,是和C#(Unity,.Net,Mono)结合的解决方案。支持android,ios,windows,linux,osx等平台。目前已经有许多成熟产品应用案例使用了xLua.本文主要介绍C#如何调用xLua脚本。变量-- example.lua.txtid=25name='hello'isM...

2018-04-19 23:27:42 1006

原创 Unity实验室之XLua调用C#程序

介绍xLua是腾讯在github上的一个开源项目(下载链接),主要解决热更的问题,是和C#(Unity,.Net,Mono)结合的解决方案。支持android,ios,windows,linux,osx等平台。目前已经有许多成熟产品应用案例使用了xLua.本文主要介绍xLua如何调用C#脚本。创建游戏对象-example.lua.txtlocal obj1 = CS.Uni...

2018-04-17 23:26:44 1986 1

原创 Unity实验室之XLua介绍

介绍xLua是腾讯在github上的一个开源项目(下载链接),主要解决热更的问题,是和C#(Unity,.Net,Mono)结合的解决方案。支持android,ios,windows,linux,osx等平台。目前已经有许多成熟产品应用案例使用了xLua.本文主要介绍xLua的基本用法。hello worldusing UnityEngine;using XLua;pub...

2018-04-16 23:41:38 427

原创 C#实用小脚本之将输入约束到指定范围

源代码public static class Utils{ public static int Wrap( int value, int min, int max ) { int n = ( value - min ) % ( max - min ); return n >= 0 ? n + min : n + max; }...

2018-04-11 00:15:09 281

翻译 Unity3D实验室之优化GC

前言本文将对Unity介绍的性能改进的文章进行部分翻译,原文地址:https://unity3d.com/jp/learn/tutorials/topics/performance-optimization/optimizing-garbage-collection-unity-games缓存void OnTriggerEnter(Collider other){ va...

2018-04-10 06:58:02 418

原创 Unity3D实验室之GameObject.Find方法效率的测试

验证结果结果是在Unity编辑环境下测试10次的平均值,单位是秒,Unity版本是5.6.5 对象数量 搜索方法 执行1000次 运行10,000次 100,000次执行 100 Find 0.002197409秒 0.0190155秒 0.1939484秒 100 FindGameObjectWithTag 0.000...

2018-04-06 22:46:06 3663

原创 mac下使用xcode 添加SOIL

Clone https://github.com/DeVaukz/SOIL move to the downloaded directory. mkdir build cd build cmake .. make sudo make install使用soil时 ,会报类似 Undefined symbols for architecture x86_64: “_SOIL_l...

2018-04-03 22:08:54 997

原创 Unity引擎及编辑器C#源代码赏析(二)—项目组织

前言上篇讲到了通过git将源码下载到本地,并大概了解一下目录结构,今天主要从工程项目的角度来看一下,Unity是如何组织的。找到sln文件sln文件是整个项目的解决方案文件,在UnityCsReference/Projects/Csharp/ 文件夹下面: 双击用Visual Studio打开即可。项目组织打开后会看到Unity C#解决方案下有6个子项目分别是Da...

2018-03-30 22:52:18 2331 1

原创 Unity引擎及编辑器C#源代码赏析(一)—目录结构

前言3月23号,Unity在GitHub上发布了引擎和编辑器的C#源代码,供Unity开发者学习参考使用。笔者第一时间去GitHub上把源码下载下来看了一下,虽然Unity仅仅是开源了C#这一层代码,引擎核心代码并没有开源,但是也是有可也学习和参考的地方的。今天试着分析一下源码的组成情况下载首先,可以去GitHub将源码clone到本地,地址在这里,下载下来后。目录是这个样子:...

2018-03-29 23:26:08 5948

原创 如何快速的学习一门新的语言

前言程序的世界变化非常快,总是出新的框架,新的语言,新的名词,如何那快速的跟上这些变化,使自己保持竞争力,而不落伍呢?语言设计的目的笔记觉的,首先要看一下这门语言设计的目的是什么,主要想解决哪方面的问题。和现有成熟语言比有哪些优势。了解了语言的设计目的,才能更好的将新语言用在刀刃上。才能有针对 性的学习。适用场景程序语言不是万能的,想靠一门语言解决所有的问题是不可能的,...

2018-03-28 22:25:06 1959

原创 Unity3D实验室之美术出图规范

前言在游戏开发时,大部分美术并不能以程序角度去考虑如何出图最优,最省,因此需要约定好一些规范,以便程序和美术更好的配合,下面分2D和3D分别来说一下。2D美术关于分辨率和尺寸首先要约定的就是设计尺寸,约定好尺寸,才能设计,才能在程序中最大限度的还原美术设计,具体就是体现在新建时的画布大小,比如,笔者项目选的设计尺寸就是iphone6的尺寸,1334x750 ,订好尺寸后,有...

2018-03-27 22:53:18 2901

原创 Unity实验室之根据模板自动生成文件

前言在写代码时,会有一些需要重复写的内容,如统一的头注释,统一的框架下的风格一致的代码等,一种解决方案是把这些都放到一个模板文件夹下,每次用时就Copy一下,但这样有几个问题,一是Copy起来比较麻烦,二是需要记住哪个模板生成哪种格式,增加记忆负担。如果能在新建文件时,自己加上或根据类型判断生成需要的模板,那就太好了。下面就来说一下如何做到。修改Unity模板目录下的文件Mac下的...

2018-03-26 23:05:03 842

原创 游戏上传App Store 一直卡在Authenticating with the iTunes Store 的解决办法

这几天在上传我们的游戏到App Store的时候,一直卡在了Authenticating with the iTunes Store阶段 换网,开VPN,取消重传都不行,真是特别的着急,经过多方查找资料,终于找到了解决办法:终端执行三条命令完美解决 1. cd ~ 2. mv .itmstransporter/ .old_itmstransporter/ ...

2018-03-22 16:44:52 3903

原创 Unity实验室之Shader优化

前言最近有人问到写Shader需要注意哪些地方及如何优化,正好笔者也在研究这方面,这里主要针对Unity来说,其它平台或引擎也可以参考,本文主要分如下几个方面来说:Shader的选择,属性和状态的设置,数据类型选择,代码编写,举例,调试Unity中Shader的选择Unity中现在可以新建4种Shader,分别是Standard Surface Shader,Unlit Shade...

2018-03-20 15:09:24 752

原创 Unity实验室之项目目录组织

前言项目刚立项后,如何在Unity里组织目录结构比较合理呢?今天分享一下笔者项目的规划,仅供参考目录展示 主要看箭头指向的几个主要目录: - __Doc目录: 主要存一些项目说明和文档,比如编码规范,代码约定等等。这里为什么要加两个下划线呢。是因为这样可以排在最前面方便查看,如果有其它重要文件也可以试着采用这种全名方法。 - Bundles: 存放需要打包成AssetBund...

2018-03-12 23:10:19 904

原创 NGUI中使UITexture变灰的方法

前言在开发中经常会遇到图片变灰的情况。如下图这样: 变亮的表示可用,变灰的表示不可用。一般这种情况的解决方案就是写一个变灰的Shader。但如果是NGUI的UITexture变灰会比较麻烦一些。那遇到这种需求要如何做呢?方案1.首先新建一个变灰的Shader,文件名起为 ==“Unlit - Transparent Colored (Gray).shader”==: 这里只...

2018-03-09 23:48:37 1020

原创 Unity中的几种层级关系优先级总结

前言在项目中,我们经常需要处理显示对象的层级关系或规划层级结构,那么Unity中主要有哪些主要的层级关系及他们的优先级是怎么样的呢?Camera首先是Camera,Camera的depth值越大的在上面,越小的在下面,比如场景有一个相机,UI层有一个相机,那么我们就可以将场景相机的Depth设置成0,UI相机的Depth设置成1。UI就会高于场景显示了。Sorting La...

2018-03-07 23:30:45 17614

原创 游戏开工前需要规范的几点

游戏的开发大多数是由团队共同完成的,因此有必要约定一些规范来共同执行行。都有哪些需要约定一下呢?笔者认为有以下几点: - 代码格式约定: 如变量的命名,方法,类接口的命名,括弧的位置等等。这样的优点是整个项目看起来比较统一,有美感,看起来心情也好。然而代码规范却不好执行,关于为什么不好执行我想单独写篇文章展开来讲。 - 资源存放位置约定: 这里的资源包括图片,材质,模型,atlas,动画,特效...

2018-02-28 19:29:20 217

原创 Unity实验室之版本管理工具git的配置

前言选择Unity版本之后,下载并安装好(怎么样安装就不说了,自行研究:-)),就该考虑建项目的事情了,是不是很想安装完就立即建项目体验一把呢?先别急,在建之前还有一些事情要考虑,那就是版本管理工具的选择:对于版本管理工具的选择,有人选择使用SVN,有人选择使用VSS,有人使用CVS,有人使用Git,笔者不想在这里讨论哪个好,哪个坏?因为笔者曾遇到过这方面的争论,所以在这里也不想说服谁去用什么...

2018-02-12 11:48:51 1028

原创 Unity实验室之新建项目及组成说明

前言Unity版本选择完了,我们来建一个空的项目,先看看空项目下的文件组织情况。操作基于以下环境: - 操作系统:macOS High Sierra - Unity版本:Unity2017.3 - 输出目标平台iOS - Root权限新建安装完首次打开Unity,会弹出选择新建还是打开已存在项目的选项,当然选择新建项目(什么?你之前有项目?选择打开?一边去:-D),之后会到...

2018-02-06 15:38:29 3897

空空如也

空空如也

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

TA关注的人

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