摘要: 前言 安装Xnode 从github下载这个插件,解压出来放在Assets目录下即可 不过这里我做了一点点改动。考虑到只想要xnode的编辑器功能,不打算打包的时候把xnode的代码带到最终的包里面,所以把runtime的代码全部放到了Editor目录里面。这样就可以保证打包时候,我们游戏的工程是和 阅读全文
posted @ 2021-09-25 20:42 CodeGize 阅读(1127) 评论(0) 推荐(0) 编辑
摘要: 2018年,google推出了aab技术。在此之后google发布通知:从 2021 年 8 月起,新应用需要使用 Android App Bundle 才能在 Google Play 中发布。这意味着以GP为主要平台的海外版本,都需要使用aab。那么什么是aab,和apk有什么不同呢?aab官方介 阅读全文
posted @ 2021-06-05 14:39 CodeGize 阅读(8052) 评论(0) 推荐(0) 编辑
摘要: 对于资源加密的思考 很多人认为ab包不需要加密,但是这样的人我认为,他思考问题的方式是片面的且狭隘。 是否加密应该根据项目本身的资源价值来决定。是否提高资源的破解难度,比如对于一个没什么价值的项目,也没有人会想要去拿你的资源,自然不需要。但是比如像闪耀暖暖这样,资源密集且开发代价较高的项目,资源应该在一定程度上保护起来,使得破解的代价也得到提高。当然,对于破解高手而言,破解只是... 阅读全文
posted @ 2020-05-01 13:11 CodeGize 阅读(5569) 评论(0) 推荐(0) 编辑
摘要: AssetStudio简介 AssetStudio是一款非官方的Unity资源查看,导出工具。 https://github.com/Perfare/AssetStudio 其主要目的是导出查看Assetbundle(简称ab包)里面的资源。 所以很多玩破解的玩家会用来破解游戏资源。这样往往也会给游 阅读全文
posted @ 2020-04-16 23:14 CodeGize 阅读(3785) 评论(0) 推荐(0) 编辑
摘要: 今天原来的计划是学车,读书,做游戏。可是人往往都有懒的时候,今天就这么任性地待着了,啥也不做,就玩《百闻牌》。 《百闻牌》是网易最近新出的一个纯卡牌手游。不同于《刀塔传奇》,它更像是《炉石传说》、《游戏王》这样的牌类游戏。 一打开,就看到浓浓的日式和风Style。包括Start界面,Loading界 阅读全文
posted @ 2019-12-14 17:28 CodeGize 阅读(958) 评论(0) 推荐(0) 编辑
摘要: CMD命令是windows上开发人员经常会使用的工具,比如copy文件,文件夹软链接等等。 有了它,有时候我们想实现一些快速的操作,都会比较便捷。在windows中,可以按下Win+R,然后输入cmd打开命令提示符输入窗口。这个窗口它对应是cmd.exe 在unity中,要启动其他的exe程序,可以使用Process类来启动一个新进程。在《Unity3D集成TortoiseSVN》中,... 阅读全文
posted @ 2019-10-26 10:51 CodeGize 阅读(1221) 评论(0) 推荐(1) 编辑
摘要: Lua作为Unity首选的热更新方式,现在基本上成了商业游戏的标配(iOS的机制)。同时不得不说的是,使用Lua,可以避开大型项目中长时间编译的问题(其实这个问题在新版本的Unity中已经解决)。还有一个好处是,服务器可以推送一段Lua代码到客户端,相当于做实时Patch,维护非常高效。但是又不得不提,Lua是一个坑,开发效率和游戏运行性能都会受到一定的影响。所以使用者一定要在适当... 阅读全文
posted @ 2019-03-07 23:10 CodeGize 阅读(2234) 评论(0) 推荐(2) 编辑
摘要: 《崩坏3》是由上海米哈游制作的3D动作类游戏。其在日式卡通渲染方面可以认为是国内的标杆之作。虽然在各大技术会议上,其技术总监贺甲分享了很多实用技术,但是在实际应用中,尤其在移动设备上,肯定存在很多的制作标准和规范,以及一些优化的Tip。所以在此,从实际游戏运行中截取GPU数据,来进行分析学习。 阅读全文
posted @ 2018-09-09 19:37 CodeGize 阅读(1498) 评论(0) 推荐(0) 编辑
摘要: Unity有一个Find References in Scene功能非常好用。在Project面板中右键一个文件,选择Find References in Scene就可以在场景中找到所有存在对这个文件有引用的物体。但是很多时候,我们更加需要知道的是,这个场景里面到底引用了哪些文件,比如做优化的时候。 这里有一个插件叫做ResourceChecker,它可以列举出... 阅读全文
posted @ 2018-06-13 22:44 CodeGize 阅读(8128) 评论(0) 推荐(0) 编辑
摘要: 在《Unity插件开发:PrefabUtility--Prefab实例引用断开和替换》中我们使用了PrefabUtility实现了Prefab实例的引用断开和替换功能,现在我们继续使用PrefabUtility来实现场景中所有Prefab实例的Apply功能。 需求描述 在很多情况下,我们会在场景中 阅读全文
posted @ 2018-05-31 10:38 CodeGize 阅读(1983) 评论(0) 推荐(0) 编辑
摘要: 前言 近段时间,ml-agent升级到了v0.3版本,做了一些变更,导致之前的文档《ml-agent v0.2:Win10下环境安装》部分内容无法在ml-agent v0.3中使用。最主要的是ppo.ipynb文件移除,导致无法用ppo.ipynb进行训练。所以这里进行重新整理。 参考文档 Migr 阅读全文
posted @ 2018-05-03 00:05 CodeGize 阅读(1084) 评论(7) 推荐(1) 编辑
摘要: Tag:Unity文件,Unity文件引用,Meta文件,GUID,FileID,LocalID 本文介绍unity工程中的文件类型,文件引用原理和meta文件的yaml结构等 参考文档: Assets, Objects and serialization Description of the Fo 阅读全文
posted @ 2018-04-02 20:43 CodeGize 阅读(29321) 评论(8) 推荐(5) 编辑
摘要: 在上一篇《Unity宏+RSP文件定义宏》中提到,Unity生成的VS工程一般是无法打开属性面板的。但是事实上,如果使用VS for unity,通过配置是可以打开这个属性面板的。这里使用Unity版本为2017.2.0f3,使用的是VS for Unity 3.4.0.2版本,IDE为VS2017版本。 打开VS2017,选择菜单“工具->选项”,打开选项... 阅读全文
posted @ 2017-11-19 14:06 CodeGize 阅读(3128) 评论(0) 推荐(0) 编辑
摘要: 参考文档:https://docs.unity3d.com/Manual/PlatformDependentCompilation.html 在Unity开发中,可以使用预编译条件,宏定义。比如在一个cs文件中 在文件的首行定义一个局部宏,仅限在本文件中有效。然后使用#if的方式判断是否存在这个宏, 阅读全文
posted @ 2017-11-17 19:06 CodeGize 阅读(3807) 评论(2) 推荐(0) 编辑
摘要: 在Unity使用Prefab过程中,我们有时候需要进行Prefab实例断开引用和替换引用的需求。实现这些需求,使用到的核心的类是PrefabUtility。PrefabUtility是一个静态类,主要用于进行Prefab的相关处理。 这里主要使用以下几种方法 PrefabUtility.Create 阅读全文
posted @ 2017-11-02 12:44 CodeGize 阅读(12231) 评论(0) 推荐(1) 编辑
摘要: (本文来自:http://www.cnblogs.com/CodeGize http://www.codegize.com) 安装TF# TF#,即Tensorflow Sharp是Tensorflow的C#版本。得益于改项目,使得tensorflow集成到unity中成为可能。(TF#的Git:h 阅读全文
posted @ 2017-10-22 19:12 CodeGize 阅读(2615) 评论(2) 推荐(0) 编辑
摘要: 注意 ml-agent已经升级到v0.3,安装请参考ml-agent v0.3 win10安装和实践 简介 AI人工智能,更准确地说机器学习(machine learning)最近一年非常火热。在最近一段时间,Unity也发布了一个机器学习的工具,叫做ml-agent。 英文介绍如下: https: 阅读全文
posted @ 2017-10-15 21:18 CodeGize 阅读(2905) 评论(9) 推荐(1) 编辑
摘要: Unity编辑器开发:官方风格的Table控件 Table控件能够非常直观地展现批量的数据。在Unity中,Light Explorer就是一个典型的具有Table控件的窗口。 如上图所示,窗口上方是4个TabButton。下面就是一个Table。这个Table功能非常强大,有列表,排序,筛选,实时同步数据更新,实时同步选择等功能。 在Unity项目开发中,也常常需要做这种Table数据的展示或... 阅读全文
posted @ 2017-07-29 14:00 CodeGize 阅读(4874) 评论(0) 推荐(1) 编辑
摘要: 在Unity开发中,枚举常常被用到。但是Unity自身对于枚举值,并不能做好中文的支持。无论是Head或者ToolTip.如下例: 为了将这些枚举值变成中文,这里使用了CustomPropertyDrawer(https://docs.unity3d.com/ScriptReference/Cust 阅读全文
posted @ 2017-05-23 07:16 CodeGize 阅读(3202) 评论(0) 推荐(0) 编辑
摘要: 在unity中,tag是一个好东西,我们可以用tag来区分物体,也可以通过tag来快速地查找物体。但是美中不足的是,tag是一个字符串string。为什么说美中不足呢? 因为假如我们在一个脚本里面想要有一个Tag字段,都只能定义一个string字段。 而这样的话,在编辑器中,就非常不方便填写,也非常 阅读全文
posted @ 2017-05-22 21:23 CodeGize 阅读(1564) 评论(0) 推荐(2) 编辑
摘要: 无论是个人开发还是团队开发,养成好的版本管理习惯可以大大提高开发效率。常用的版本管理软件一般用SVN或者Git。尽管2者都在用,但是更加偏好SVN一些。安装TortoiseSVN就可以直接将SVN管理软件集成到Windows的Explorer中了。点击鼠标右键就会有SVN的相关菜单,可以非常方便地C 阅读全文
posted @ 2017-04-15 09:55 CodeGize 阅读(753) 评论(0) 推荐(0) 编辑
摘要: 使用unity5.6.0f3开发VR游戏的过程中,出现了模型动画不显示,或者突然显示的情况。 其原因在于Skinned Mesh Renderer上,当这个物体不在视野内的时候,默认会停止这个物体上的动画,导致人物消失或者动画停止之类的问题。 解决的方法是勾选Skinned Mesh Rendere 阅读全文
posted @ 2017-04-13 09:02 CodeGize 阅读(3045) 评论(0) 推荐(0) 编辑
摘要: steamvr1.2版本在unity升级到5.6时,可能会出现手柄无法追踪的问题。造成这样的原因,其实在steamvr1.2的说明中注明了 按照说明,我们在相机上增加一个SteamVR_UpdatePoses即可修复 来自www.codegize.com 阅读全文
posted @ 2017-04-07 09:19 CodeGize 阅读(1930) 评论(0) 推荐(0) 编辑
摘要: 在游戏中,程序,美术,策划甚至音效都是分工合作的。很多时候,对于unity3d中一堆英文,大家都会看得很郁闷。尤其是不同的程序员,命名方式也不尽相同,甚至还是用拼音。因此,在脚本中增加一些中文显示,就能够很好地解决这个问题。 首先,unity中对于字段(Field)已经有了很好的中文显示方法[Hea 阅读全文
posted @ 2017-04-03 11:12 CodeGize 阅读(6484) 评论(0) 推荐(0) 编辑
摘要: 前言 在之前《Unity利用Sapi进行windows语音开发》中,本计划不准备继续做语音识别。因为在unity3d中已经提供了语音识别的相关方法,详见unity3d的官方文档:https://docs.unity3d.com/ScriptReference/Windows.Speech.Keywo 阅读全文
posted @ 2017-03-30 16:58 CodeGize 阅读(5479) 评论(11) 推荐(3) 编辑
摘要: 一年前曾经碰到过已无限世界为题材的游戏开发比赛,虽然对比赛没有兴趣,但是对这个题材倒是有点想法。如何通过unity3d实现无缝的循环世界呢。 有一种想法是动态生成,一块场景一块场景进行动态加载。(做过2D背景地图加载的可能理解,不展开) 如果是单场景,有没有简单的办法呢?思来想去,总算找到一种办法, 阅读全文
posted @ 2016-09-04 10:13 CodeGize 阅读(4132) 评论(0) 推荐(0) 编辑
摘要: 简述 在传送门中,核心的玩法是在地上或者墙上打开2个可以联通的洞来实现传送的效果。以此扩展加入解谜要素构成游戏的核心。 这里尝试使用unity来实现传送门的核心功能,具体功能分析如下: 1、传送门的模型 2、传送门的贴图 3、传送门的传送功能 这里我们需要以下软件:3dmax 2014,unity3d 5.4.0,visual studio 2015 一、传送门的模型和uv ... 阅读全文
posted @ 2016-08-21 10:13 CodeGize 阅读(11042) 评论(3) 推荐(0) 编辑
摘要: 在PC端VR游戏开发中,需要动态加载本地的MP3文件,但是Unity3D不知道出于什么原因,到5.4.0也不支持MP3文件的外部加载(目前只支持wav和ogg)。 因此要想通过www来加载mp3文件就只能采用曲线救国的方式,将MP3文件读取后转为wav或者ogg,然后再给AudioSource来播放 由于只是在PC端进行开发,故这里采用NAudio.dll这个类库。使用NAudio需要将项目U... 阅读全文
posted @ 2016-08-18 21:23 CodeGize 阅读(14340) 评论(2) 推荐(0) 编辑
摘要: 在unity开发过程中,通常我们习惯性地在Windows操作系统下使用svn进行版本管理,而每次提交更新,都需要回到文件夹下的这种操作让人无法忍受。是不是可以集成svn到unity中呢?查了一圈unity store可以看到很多svn的第三方插件。考虑到我们只需要简单的功能,而且不希望加入额外复杂的 阅读全文
posted @ 2016-07-07 08:54 CodeGize 阅读(2242) 评论(0) 推荐(0) 编辑
摘要: Selection是一个静态类,它的主要功能是获取在project窗口中鼠标选择的对象或者是inspector窗口的当前显示的对象。它的字段有 activeGameObject activeInstanceID activeObject activeTransform gameObjects ins 阅读全文
posted @ 2016-07-07 08:53 CodeGize 阅读(1228) 评论(0) 推荐(0) 编辑
摘要: AssetDatebase也是一个静态类,他的作用是管理整个工程的所有文件(一般成为“资产”)。直观地说就是管理整个project窗口中的所有内容,比如,你可以增加、删除、修改文件等等。 这里有几个常常用到: CreateAsset:创建文件 CreateFolder:创建文件夹 DeleteAss 阅读全文
posted @ 2016-07-07 08:53 CodeGize 阅读(1187) 评论(0) 推荐(0) 编辑
摘要: 有unity中的菜单栏是我们经常使用到的地方,如下图: MenuItem的作用就是增加一个自己的菜单 使用方法: 在工程中Assets目录下任意一个Editor目录(以后简称Editor目录,如果不存在,请自行创建)中创建任意脚本,比如我创建了叫做MenuTest .cs,双击进入代码编辑,创建一个 阅读全文
posted @ 2016-07-07 08:52 CodeGize 阅读(4313) 评论(0) 推荐(0) 编辑
摘要: Unity3D(以下简称Unity)是今年来非常流行的游戏开发引擎。他不仅有足够和unreal(虚幻)引擎媲美的渲染效果,足够多的平台输出,更为突出的就是Unity本身的编辑器。unity本身除了使用mono脚本(c#,js等)来作为游戏脚本外,还可以用于扩展编辑器,也就是所谓的unity插件。所以 阅读全文
posted @ 2016-07-07 08:51 CodeGize 阅读(1664) 评论(0) 推荐(0) 编辑
摘要: 在win10上,如果安装了某些输入法(比如QQ输入法),会造成unity的键盘事件被输入法捕获而不能触发的情况。只有将输入法切换到英文状态下才能响应键盘事件。 解决办法有, 1:用户主动切换输入法,甚至卸载输入法 2:程序在非输入状态下,屏蔽输入法 由于方法1在全屏状态下,用户完全不知道是否在输入法 阅读全文
posted @ 2016-06-23 20:05 CodeGize 阅读(5687) 评论(0) 推荐(0) 编辑
摘要: 在Unity3d中经常会碰到中文乱码的问题,比如代码中的[AddComponentMenu("GameDef/AI/战机AI")],注释,中文文本等等 其原因在于,unity本身是不顾及地区的,所以默认全部为unicode编码,造成中文乱码 解决方法很多,比如, 一个一个文件用文本工具转成utf8格式 修改unity3d文件模板 第一种方法,在数量少的时候可行,数量多的时... 阅读全文
posted @ 2016-06-04 18:11 CodeGize 阅读(2868) 评论(1) 推荐(0) 编辑
摘要: 重要组件 SteamVR_Camera VR摄像机,主要功能是将Unity摄像机的画面进行变化,形成Vive中的成像画面 使用方法: l 在任一个摄像机上增加脚本 l 点击Expand按钮 完成以上操作后,原本的摄像机会变成如下结构 l Origin:位置 l Head:头部 l Eye:眼睛 l 阅读全文
posted @ 2016-05-24 19:20 CodeGize 阅读(3698) 评论(0) 推荐(0) 编辑
摘要: 简介 Layer可以用于光照的分层和物理碰撞的分层,这样可以很好地进行性能优化 数据结构 Layer在Unity中有3中呈现方式:1、string名字,2、int层索引,3、LayerMask数据 一般地,在编辑器中,我们设置GameObject的Layer,是直接使用的层的名字,比如Default、UI等等。 而在代码中,使... 阅读全文
posted @ 2016-05-23 09:58 CodeGize 阅读(1784) 评论(0) 推荐(0) 编辑
摘要: 软件中的语音技术主要包含两种:语音识别speech recognition和语音合成speech synthesis。一般地,开发者会因为技术实力和资金实力等各方面的问题无力完成专业的语音引擎,因此通常选择现有的较为专业的语音引擎来完成相关的开发,比如国内非常出名的科大讯飞,百度语音等等。当然国外的 阅读全文
posted @ 2016-04-21 23:25 CodeGize 阅读(6243) 评论(44) 推荐(3) 编辑
摘要: Unity3d与dll文件 阅读全文
posted @ 2012-02-28 17:16 CodeGize 阅读(1085) 评论(0) 推荐(0) 编辑
摘要: 游戏中常常要做一个动作的命中判定,比如攻击的命中判定,结果一般为未命中、普通命中,致命命中,命中格挡等(当然复杂起来远不只这些)。一般的,程序上(或策划上)采用的是优先级概率算法或者圆桌算法。优先级概率的算法是:先判定是否未命中,如果命中是否闪躲,如果未闪躲是否招架,最后才是普通攻击(有省略)。也就是说按优先级(顺序)进行概率计算和判断。圆桌算法是将这些属性(命中普通攻击、未命中、招架、命中致命攻击)放在一起,构成一个圆桌。如20%未命中,5%致命攻击,30%招架,剩余45%为普通攻击。从上面的描述来看,圆桌算法输入的参数是一个代表概率的数组,或者,更广泛地说是一组系数。我们完全没有必要将参数 阅读全文
posted @ 2012-02-07 11:35 CodeGize 阅读(1935) 评论(0) 推荐(0) 编辑
CodeGize的个人博客