- 博客(669)
- 资源 (160)
- 问答 (4)
- 收藏
- 关注

原创 [Unity设计模式与游戏开发]工厂模式
前言工厂模式(Factory Design Pattern)也是游戏开发中比较常用的创建型模式,一般情况下,工厂模式分为三种更加细分的类型:简单工厂、工厂方法和抽象工厂。在GoF设计模式一书中,它将简单工厂模式看做是工厂方法模式的一种特例,所以工厂模式只被分成了工厂方法和抽象工厂两类。举个例子在游戏开发中哪儿用到了工厂模式,我随意看到了FairyGUI中创建UI组件相关的源码就用到了简单工厂模式...
2020-05-13 10:20:29
7543
13

原创 Unity iOS内购
前言:最近项目需要切换到iOS平台做一些提交审核和支付对接相关的工作,上一篇刚分享了最新的iOS10提交审核的一些坑,这篇分享一些内购相关的流程。Unity iOS内购思路:Unity调用iOS内购代码实现效果图: 流程这里就不重复写了,直接上截图 OC代码:IAPInterface(主要是实现Unity跟OC的IAP代码的一个交互作用,等于是一个中间桥梁)#import <Foundation
2020-05-06 16:40:53
9792
3

原创 [Unity设计模式与游戏开发]原型模式
前言原型模式谈的最多的就是克隆,谈到克隆我们就会想到第一个克隆羊多利,是我们生物工程史上的一次重大突破。克隆又称作拷贝,记得在做iOS开发的时候,刚接触OC开发谈的比较多一个知识点就是深拷贝和浅拷贝,浅拷贝只是拷贝了变量的内存地址,深拷贝拷贝了变量的内容。提到克隆我们在Unity开发中最常见的API就是 GameObject.Instantiate(),看他们的注释,Clones the obj...
2020-04-20 10:12:54
1938

原创 [Unity设计模式与游戏开发]单例模式
前言单例模式是我们最常用的设计模式,面试的时候如果问任何一个开发者设计模式,单例模式估计是脱口而出吧,23中常见的设计模式之中并不是所有设计模式都是很常用的,而单例模式绝对是最常用的那一个。但如果真正面试深入问到单例模式,那你确定你真的了解嘛?常见的面试会让你现场写个单例模式,如果深入一点的问的话会问单例模式有几种实现方式?用代码实现并说出各个方式的优缺点?想必如果面试官真这么问的话,估计绝大多...
2020-04-14 14:07:03
1122

原创 [Unity设计模式与游戏开发]UML入门
前言UML类图对软件开发者而言应该是必须要了解的工具之一,也是大学软件设计专业必学的课程之一,对我们理解设计模式有非常大的好处,但很惭愧由于我的大学专业并不是软件设计所以我之前其实对UML只是大致了解,但有一些符号还是有些模糊,因此也就特地在整理巩固一下。UML基本介绍UML就是统一建模语言,是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的类图。UML本...
2020-04-14 14:03:43
2923

原创 [Unity设计模式与游戏开发]七大设计原则
前言我对设计模式的理解是它就好像习武之人的内功,当内功强的人学习各种高深的武功就很得心应手,设计模式不同层次不同阶段的人对它的理解不同,我一直认为设计模式和算法一直是程序员两块非常重要的基本功,当基本功扎实就能对各种框架各种新技术驾轻就熟,会学习的很快,虽然在刚毕业的时候看过一遍设计模式,但感觉对它的理解还不够深,现在再重头回顾捋一遍。设计模式的目的设计模式为了保证程序具有更好的代码重用...
2020-04-14 13:57:48
1579

原创 [Unity设计模式与游戏开发]前言
前言做了几年开发之后,发现不同时期对设计模式的理解会不同,刚毕业的时候看《大话设计模式》的感觉就是我平时写的代码也就是菜鸟么,然后菜鸟经过老鸟的指点之后对代码进行优化,很佩服老鸟的代码框架设计能力,但轮到自己设计功能的时候自己却不会用设计模式,或者说当时看设计模式只是浮于表面的“懂”。再过一两年看设计模式有了那么一些感觉,面试的时候或许能说出几个常用的,但还是体会的不够深,没能进行融会贯通。现在...
2020-04-14 13:54:50
1244

原创 Unity Visual Effect Graph入门与实践
前言相信开发者们已经注意到Unity在最近的版本中进行了很大的改动,例如:新的开发模式DOTS、新的粒子特效系统、新的渲染管线URP、新的输入系统InputSystem和新的Shader系统ShaderGraph等等。对于开发者来说,Unity朝着更加方便,更加高效的开发方向发展显然是件好事。本文所要讲解的正是新的粒子系统Visual Effect Graph(由于个人习惯,笔者会简称为VF...
2020-03-27 10:33:00
5388
3

原创 EntityComponentSystemSamples学习笔记
前言Unity官方发布的EntityComponentSystemSamples是非常不错的案例,值得深入学习以用于项目开发中。一些特性介绍ECS会出现好多新的特性需要了解一下:GenerateAuthoringComponent类似老的继承Monobehavior,使得脚本能够直接挂在GameObject上,但挂上之后在Inspector上显示会增加一个Authoring后缀,这个a...
2020-03-24 21:21:59
2903

原创 Unity DOTS学习教程汇总
前言经过一周在家耐心学习Unity ECS和DOTS,我认为是下一代的Unity开发模式,以后游戏的发展方向都是Big World,现有的GameObject的模式毕竟有瓶颈,都会转为Unity的Entity模式,能够支持更多的实体,比如射击类游戏,可以很好的支持那种枪林弹雨的感觉。主要是深入学习Unity官方开源的 EntityComponentSystemSamples案例,记录下学习笔记并...
2020-02-16 13:15:12
5563

原创 利用Jenkins实现Unity自动化构建
前言自动自动化构建已经成为了IT行业的标配,尤其是游戏行业,一些顶级公司的高级岗位甚至知名要求会自动化构建,足以说明会这个技能是多么重要。系列文章介绍1、什么是Jenkins,为什么要用它维基百科是这样定义的,Jenkins是一款由Java编写的开源的持续集成工具,在我的理解就是自动化开发的一个脚手架。Jenkins应用于互联网开发的方方面面,不仅仅局限于本文主要讲的游戏自动化发布,...
2019-12-31 12:23:04
3063
2

原创 Unity自动生成阻挡Collider的GameObject工具
前言场景中会有碰撞阻挡,或者触发器,一般是美术或者策划配置,策划一般是直接配置collider,但为了调试方便,需要显示对应的mesh方便查看防止的位置是否正确,我们可以写个工具来控制生成mesh和删除mesh方便调试使用。思路一般就是几种内置的collider,meshcollider、boxcollider、capsulecollider、spherecollider等,我们判断出对应的...
2019-09-29 10:04:34
3113

原创 Wwise入门和实战
前言游戏开发中音效往往是会被人们忽略的模块,美术表现往往视觉冲击力很强,就能直接感觉出好与不好,但音效模块是一种锦上添花的模块,好的音效设计会使得游戏的体验更加好,我在没有接触Wwise之前也是用的Unity内置的Audio模块,程序的工作就是调用原生的音效而已,几乎没有什么改变,如果我们想要实现一个最简单的需求,例如赛车游戏,引擎声随着速度的变化而变化,我们用Unity原生的音效模块就会很难实...
2019-09-28 08:26:13
30667
1

原创 Unity开发类似Profile那样的数据分析工具
前言Unity开发者对Profile并不会陌生,我们如何开发一个类似Profile的Editor工具来实现我们想要监控的数据呢,这里以监控网络消息包数据为例,开发一个数据监控工具。思路主要就是采集数据和数据的表格化,采集数据我是以200毫秒时间内搜集收发的数据列表做成一个数据包,表格绘制采用Handles.DrawAAPolyLine接口来绘制。效果图代码#if UNITY_EDI...
2019-09-28 08:20:04
1803
1

原创 程序员也应了解的Unity粒子系统
原文链接http://dingxiaowei.cn/2019/07/16/前言曾经我们是不是以为跟粒子系统打交道多的是特效美术?曾经我们是不是以为改变粒子的位置是不是只要设置transform的position?曾经我们程序对粒子系统做的最多的操作是不是只要加载显示就OK了?曾经我们想要一次又一次的播放粒子特效是不是显示隐藏再显示父节点?曾经我们想要改变一下粒子特效的参数是不是先获取Part...
2019-07-23 16:35:29
6278
5

原创 Unity表格配置编辑工具
前言游戏开发中表格配置是必有的功能,我们会将一些游戏数据配置在表格中,一般流程是Excel编辑数据,然后导出C#的Model类和Unity中可用的二进制或者json/xml数据等,但如果碰到要一个需求,策划想要频繁修改数据并且在游戏中测试,这就发现我们需要频繁的在Excel中修改然后导出,然后启动Unity测试,这样的流程就显得很繁琐,而且我们不能保证我们填写的数据就是正确的,难免有手滑手误的时...
2019-07-07 19:03:52
3032

原创 Unity动画生成工具
前言美术做一个模型,附带很多动画,然后就创建和管理动画状态机,然后类似的模型可能有很多,也就是我们所理解的皮肤,低级的是换贴图,高级一点的换模型,如果模型比较多的话,美术要创建和管理很多相同的动画,重复性的劳动,这会就需要有个动画生成器了。思路我们可以根据美术的要求通过代码创建一个AnimatorController,但一旦美术修改什么需求我们就要跟着修改会比较麻烦,比较简便的是美术先创建一...
2019-07-04 22:05:06
3258

原创 关于C#的反射,你真的运用自如嘛?
前言我们都知道反射在编程语言里是非常方便也是非常强大的,但或许有人会觉得在学习或者工作中用的可能并不是那么多,这对于刚入行不久的人而言的,我的理解是反射在写框架和写工具是用的比较多的。举个栗子:写一个Excel的表格编辑器,我们能够在控制台修改Excel里面的内容,或许有人会觉得这有啥难的,直接手撸对应的Model,如果哪一天策划手滑或者手贱修改了命名,或者增加/减少一列,那我们程序是不是也要跟...
2019-06-28 13:25:34
3063
10

原创 游戏开发防作弊以及原理
前言如何防作弊在游戏开发中还是占蛮重的比例的,这也涉及到游戏盈利的问题,如果不做防作弊措施,或许我们开发出来的app当前上线或许第二天就出破解免费版了,这个事情我亲身经历过,当然这是基于app做的比较好被外挂公司盯上了,一度很火的吃鸡游戏端游版本其实外挂非常猖獗,这也是因为没有做防外挂,如何防作弊在求职者求职的时候也会经常被问到,当然我们能想到最简单的方案就是不要信任客户端任何数据,以服务器数据...
2019-06-27 17:42:27
38465
86

原创 【Aladdin-Unity3D-Shader编程】之八-2D图常用的Shader效果
前言Shader效果常用于3D模型,但2D图也有不少常用的效果,例如:圆角头像,图片灰态,边缘着色等等,下面我就依次做一个介绍。图片灰态效果核心思路在片元着色器里面对每个图元进行采样,将图元的颜色x,y,z分别乘上灰度系数然后赋值给片源颜色,就将彩色变成了灰色了。代码//-----------------------------------------------【Shader说明...
2019-04-11 17:44:53
4093

原创 【Aladdin-Unity3D-Shader编程】之七-波光粼粼的鱼
前言通过shader实现一个波光粼粼的鱼的效果,效果如下图所示,鱼的游动是用的animator,我们也可以用shader通过模型vertex偏移来实现鱼儿的游动。效果代码//-----------------------------------------------【Shader说明】----------------------------------------------// ...
2019-04-11 09:16:38
2054
1

原创 【GFFrameWork】事件系统
前言游戏开发中抛事件,收事件也是比较常用的解耦方式,我所理解的设计模式旁观者模式有类似的原理,所以事件系统在一个框架中还是蛮重要的一块,本生事件系统不算一个大系统,代码量不多,主要是思路就是注册监听。代码EventManager//-------------------------------------------// Copyright © Aladdin. All rights r...
2019-04-10 13:59:26
1016

原创 【GFFrameWork】UI框架2-UI界面自动生成模板代码工具
前言我们写UI界面会发现有这么一些重复步骤,创建UI Prefab,然后创建对应界面的View脚本,然后创建跟UI节点组件绑定属性字段还有一些框架层面的接口方法。虽然有时候写这些代码不需要经过大脑,并且键盘敲的啪啪啪爽的飞起,但其实很浪费时间,笔者就想可以写个自动生成UI模板的工具,就减少了这样重复机械式的代码,也节约了大量的时间,我们程序员应该善于创造工具,让自己变"懒"。效果操作...
2019-04-10 13:57:27
2203

原创 【GFFrameWork】UI框架
前言曾经的老大说过,游戏开发70%跟UI打交道,貌似也是,UI是游戏开发里面的大头,这么说一个不错的UI框架就比较重要,UI界面会比较多,大项目大几十个系统界面,管理不当会造成比较大的麻烦。之前NGUI项目界面层级通过Depth管理界面的显示层级,Depth越大就显示在前面,后来UGUI通过设置SetSiblingIndex,值越大越显示在前面。有时候我们有需求某些界面固定显示在最上面,例如引导...
2019-04-10 13:55:34
2145
1

原创 【GFFrameWork】代码热更及资源下载
前言现在比较主流的逻辑更新是Lua方式,最常用的ToLua、SLua,XLua等等,但笔者是不太喜欢Lua开发,相比较直接写C#,lua的效率要低得多,这里GFFrameWork选择的是C#热更方案ILRuntime,这个方案由掌趣公司蓝大大维护,据我了解目前用这方案开发的项目还是不少的,ET框架也是采用这种方案,ILRuntime的前身其实是李总开发的L#方案,由于在大概15年左右,逻辑热更方...
2019-04-10 13:51:21
1741

原创 【GFFrameWork】管理器和框架启动
前言游戏开发中,我们会创建各种各样的管理器,可以说每一个模块我们就得创建一个管理器,例如ResourceManager、UIManager、DataManager、LogManager等等,作者之前项目是各种Manager继承字MonoBehaviour,然后挂在Hierarchy上,这样有一个弊端,我们每添加或者删除一个manager就要保存一次场景,做Unity开发的都知道git或者svn协...
2019-04-10 13:46:45
1088

原创 【GFFrameWork】多功能链式计时器
前言Unity游戏开发中,我们常用Unity的协程来实现延时,使用频率还是蛮高的,例如:分帧加载,延时加载等,感觉有必要做成一个通用的库,但正好看到网上有人写好了这块,就不重复造轮子了,就收入囊中了,感谢作者!简要说明简单上手:在脚本中使用this作为入口,e.g. this.Delayer(1, DoSomething);自定义:e.g. this.Sequence().Loop(2)....
2019-02-20 14:25:28
714

原创 【GFFrameWork】游戏Log模块
前言为了让项目功能模块化,支持可复用性和可扩展性的原则,将跟游戏关联不大的功能模块单独拎出来添加到一个独立库工程。Log是游戏框架中比较重要和基础的一个功能模块。并且Log是调试的重要手段之一,游戏Debug版本在UI上显示Log也会显得尤为重要。效果展示功能说明目前Log模块支持的功能:支持UI可视化支持是否显示日志支持是否显示日志时间支持显示不同级别(一般/警告/错误)的日志...
2019-02-20 14:20:57
1972

原创 【GFFrameWork】游戏持久化存储模块
前言Unity开发数据本地保存也是重要的一个基础功能,单机游戏肯定要将数据存储在本地,网络游戏可以以服务器存储为主,但也有的数据需要存在本地,例如存储玩家账号,Unity也为我们提供了一个数据持久化存储方案PlayerPrefas,当然也能满足我们基本存账号的需求,但他的不足也很明显,就是Editor上存储在注册表上,会污染我们本地的注册表,其次就是存储的数据类型有限,只能存一些很基本的数据类型...
2019-02-20 14:17:53
1010

原创 使用adb logcat查看模拟器异常
前言我们做的app有时候会跑出模拟其妙的异常,比如闪退呀、卡住呀等等,碰到这种问题是蛮头疼的,尤其是概率性触发的问题,这时候我们就需要用到adb catlog工具。操作添加adb工具到环境变量 adb.exe一般是放在sdk目录下/platform-tools下的,我自己电脑上的路径是E:\AndroidSDK\platform-tools链接可以使用命令 adb connect 127...
2019-02-20 14:15:27
5202

原创 【Aladdin-Unity3D-Shader编程】之六-模型实时阴影
前言在游戏开发中实时阴影是比较常见的需求,我们最常见的方法是实时光照,但是这个会带来性能的问题,如果场景中模型比较多,例如我最近在做的3D足球游戏,场景中22个球员,如果采用实时光照DC会增加好几百,会造成渲染的压力,就有必要采用关照贴图的方案,比关闭掉实时光,但这种方案就降低了DC,减轻了渲染压力,这就要求阴影必须采用其他方案,我这里介绍Shader来现在的方案,貌似是王者荣耀采用的一种方案,...
2018-11-19 11:37:14
2805

原创 如何搭建Jenkins导出Unity安卓环境
前言早早去公司上班,老大经常会叫我出一个demo的包,我就想起来可以配置一个打包工具,让他随时想要一个运行包就可以自己打包看效果,就想起来可以配置一个Jenkins打包环境。这样在同一个局域网内不需要Unity开发环境,就只要浏览器打开Jenkins然后点击打包即可。准备工具准备Jenkins环境,可以选择去Jenkins官网下载,我这里准备了一个Jenkins的war包。搭建步骤...
2018-11-17 21:28:40
1261

原创 【Aladdin-Unity3D-Shader编程】之五-模型常见特效
首先来看一个表情,是不是感觉很酷炫,这就是流光效果。我们也可以在模型上面来添加上这个效果,下面会介绍。一、缩放效果效果图会看到模型有一个伸缩的效果思路贴图的模型坐标+=法线 * 缩放系数ShaderShader "AladdinShader/50 DirectionOffset Shader"{ Properties { _MainTex("M...
2018-11-11 09:08:34
2414

原创 【Aladdin Unity3D Shader编程】之四 贴图纹理
关于纹理贴图介绍纹理坐标也叫UV坐标,UV坐标都是0~1,并不是我们所理解的像素坐标,相当于是一个百分比。编写shader映射纹理将纹理的颜色取代漫反射的颜色Shader "AladdinShader/11 Single Texture Shader"{ Properties { // _Diffuse("Diffuse Color", Color)=(1,1,1,
2017-11-11 14:57:10
2117

原创 【Aladdin Unity3D Shader编程】之三 光照模型(二)
高光反射模型Specular=直射光*pow(cosθ,高光的参数) θ:是反射光和视野方向的夹角 编写高光反射ShaderShader "AladdinShader/07 Specular Vertex Shader"{ Properties { _Diffuse("Diffuse",Color)=(1,1,1,1) //添加自身的颜色 } Su
2017-11-07 10:59:14
1107

原创 【Aladdin Unity3D Shader编程】之二 光照模型(一)
光照模型光照模型就是一个公式,使用这个公式来计算在某个点的光照效果。 在标准光照模型里面,我们把进入摄像机的光分为下面四个部分: * 自发光类似生活中的萤火虫等自己能够发光* 高光反射类似生活中的镜子,近似认为百分百反射出去* 漫反射类似生活中的光照射到墙壁上、桌子上的反光不会百分百反射出去,各个方向都会反射。* 环境光类似生活中的光照照射在某个物体上,物体漫反射然后反射到其他物体上这些过
2017-11-05 16:51:54
1352

原创 【Aladdin Unity3D Shader编程】之一 基本入门
OpenGL、DirectX以及GLSL、HLSL、CGOpenGL和DirectX是图像应用编程接口,用于渲染二维或者三维图形。GLSL着色语言是用来在OpenGL中着色编程的语言,有点在于跨平台性,可以再Windows、Linux、Mac甚至移动平台上工作。HLSL是微软控制着色的编译,几乎只支持微软自己的产品,如Windows,XBox等,其他平台没有可编译HLSL的编译器。CG是有英
2017-11-05 12:24:39
1759
1

原创 [小工具]代码统计小工具编写
代码小工具是有一定工作经验并且有更高追求的程序的必备技能,今天加班到早晨五六点,到家都七点了,回到家倒头就睡,下午来公司感觉头还有点晕乎,工作的话怕只会产生更多的代码,就想起来写个工程代码统计工具。效果图上图是平时积累的小工具,积累我认识也是程序员必备的素养!主要代码using System;using System.Collections.Generic;using System.IO;us
2017-11-01 18:54:53
1967

原创 Lua-元表
Lua-元表元表作用元表扩展普通表举例:如果A+B两个表相加,如果不设置元表的话就会报错,这种情况就可以设置元表来实现,就类似C++的友元函数这种概念元表设置mymetable = {}mytable = setmetatable({}, mymetable)设置失败情况当元表有_metatable键值则设置失败 tab = setmatatable({},{_metatable=”sdfsd”
2017-10-10 08:42:32
1674
1
AStar C#寻路算法
2015-08-05
scut环境搭建
2015-06-22
动画系统例子
2014-07-04
OpenGL开发包
2014-06-20
横版二维码扫描
2014-05-06
传智java教程大全
2014-04-21
Marshal类的使用
2014-04-17
2dtoolkit2.3
2014-03-04
EasyTouch3.1
2014-02-26
unity小地图
2014-01-24
KGFMapSystem
2014-01-22
unity3d聊天
2013-12-07
crossdomain
2013-11-19
棋牌游戏服务器怎么进行自动化测试
2016-10-05
关于HTML5小游戏如何下载它的源码和资源的问题
2016-03-20
间接性的出现这种错误 ,寻求解决方案
2015-01-29
求解决动态loading显示问题
2013-09-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人