自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

正经的时候都在打游戏

不正经的程序员瞎哔哔

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

原创 -WaitMutex -FromMsBuild”已退出,代码为 6的另一种奇葩可能

-WaitMutex -FromMsBuild”已退出,代码为 6的解决

2023-04-04 18:11:09 448

原创 has natively added scene component(s)..问题解决

UE5 警告解决

2023-04-01 16:09:36 317

原创 UE4 ListView

UE4-ListViewUE4ListView和U3D的思路不太一样,详细了解之后发现UE4的ListView还是蛮先进的,直接就实现了逻辑和显示分离,提高效率,相对的,他的用法也比Unity的ListView绕一些。举例,一个ListView如果设置12个Entry,那么它最多同时可以显示12个UI条目,假如你有30个数据,这30个数据是逻辑部分,不会为你创建30个Entry,那样太浪费了,而是循环利用这12个Entry显示,十分环保。当然30个数据似乎差异不大,那么当你有1000条数据的时候,优势就

2021-07-30 17:53:01 5339 1

原创 UE4 动态材质设置

UE4的话,有3种材质:1-材质(Material)2-材质实例(Material Instance)3-动态材质(Dynamic Material Instance )(1)如何从材质创建材质实例:右键点击一个材质就可以,材质实例具备材质的静态结构。想要修改材质实例,还需要点掉对应参数的对勾然后材质实例就变成可修改状态了。(2)应用环境基础材质用来编辑材质的结构,材质实例用于制作材质的变数,但是是静态可控范围的,比如即时战略的步兵,或者格斗游戏的1P...

2021-06-09 16:59:28 5657 1

原创 通过脚本向AnimClip添加动画事件

通过脚本向AnimClip添加动画事件最近我的独立游戏已经开始进入到了收尾阶段,所以开始需要大量的配置怪物了,那么怪物攻击通过动画事件回调来通知脚本层一些重要信息,比如,开启伤害判定,关闭伤害判定,通知脚本层本次攻击结束,可以让AI做下一个决断了,等等。如下所示:protected void OnAnimEvent(string param){ switch (param) { case "resetOnly":{ ...

2021-03-19 13:08:30 331

原创 Unity NavMesh 判断路径是否可达和路径长度计算

Unity NavMesh 判断路径是否可达和路径长度计算最近我的独立游戏已经接近尾声,估计过一段时间就将要上架Steam了,还是有点小兴奋。希望大家能够多多支持:)在设计人物移动的时候,我遇到一个问题,如图:像这种高底层的寻路情况,如果道路被挡上,当我点击人物的时候,人物会直接跑到地下部分X的正下方。这是因为Unity默认寻路对这种上下分层的寻路规则是,寻找一个垂直方向的接近点。这不是我想要的效果,像这种情况出现的时候,我希望能直接提示玩家,目标不可达,查了一下Uni...

2021-03-11 11:31:59 2863 5

原创 Opsive Ultimate Character Controller(2)装备道具的要点

官方文档是英语的,写的还算不错,但是有些应该明确强调的地方写的很泛泛,英语水平还算勉强可以的我看的都十分费劲。于是总结一个小文档,重点解决一个问题。Opsive Controller的装备系统概要本文的前提是你对文档有个大概了解,但是有些还不是特别清晰的情况,完全不看官方文档和视频,看这篇似乎也没多大用。 一个ItemType可以对应多把武器吗? 不可以,因为一个ItemType只能对应一个武器,添加武器的时候用的是ItemType,不是你具体的武器。 动态生成好,还

2020-07-20 10:00:34 732

原创 Json.Net简要测试

一、分析最近写开放世界沙盒游戏,需要把整个世界序列化,反序列化。可选方案有1-C#自带的序列化工具-直接序列化成2进制文件,缺点是不支持Dictionay,Vector3等复杂对象的支持。有点是比较快,而且不需要引入其他插件。可以增加字段,但是不能删除字段。2-自己写文本序列化:优点,灵活。缺点,麻烦。3-使用Protobuf序列化:优点,快,省空间,但是我又不是发网络协议,用不着你省空间。缺点:需要自己定义PB结构体,生成一堆烂七八糟的代码。4-Json.Net这是我最后选择的方案

2020-07-13 10:58:27 188

原创 Unity Quaternion用法小结

AngleAxis方法和SetAngleAxis方法官方例子。Before:After:Quaternion的静态方法,是用来构造一个Rotation的。分析:轴,如果设置为Vector.Down,那么单头会向左侧旋转。同理,Vector.right像下旋转 Vector.Left像上旋转。30如果传负值,向反方向旋转。这个方法,用于定义一个旋转角。LookRotation实现简单的追踪效果:使用:Quaternion.LookRotation (成员函数)或 S

2020-07-07 11:55:16 1449

原创 Opsive Ultimate Character Controller 使用经验(一)添加一个跳舞的Ability

今天检错Opsive的时候,无意间看到有人把我的文章转到腾讯的文章版面去了,虽然没有注明原文地址,不过看到自己的文章被转载,还是有点小激动的,于是决定今天在写一篇:)为了文章观感,图片就不加水印了,希望转载的人自觉填上原文地址,WangHaoDiablo原创文章:)实战:使用UCC做一个跳舞的逻辑 需求:玩家按下逗号,开始跳舞,再按下一次逗号,停止跳舞。 创建一个类 using UnityEngine;using Opsive.UltimateCharacterC..

2020-07-03 15:49:24 1501 4

原创 WorldCreator2 使用手记(一)

World Creator 是德国出品的一款支持Unity,Unreal甚至影视行业的一款非常不错的地形制作工具,其最大优势在于利用GPU快速烘焙地形。速度甩Gaia,MagicMap,WorldComposer之类的好几条街。加之支持各种Filter,样条线工具可以非常方便的制作出道路,河流,各种侵蚀效果的地形。可以说是非常好用的一款游戏开发地形工具。功能性甩Unity默认地形工具好几百条街。安利到此为止。(1)购买我之前花了189刀买了World Creator的Unity版,World C

2020-05-10 09:24:18 4494

原创 OpenGL 理解VAO VBO 和 IBO

VAO VBO 和 IBO曾经有一个老师在教我们的时候,给我们说了一句很实在的话,当你接触一个新的领域的时候,什么最压人?名词最压人,随便一个专有名词都够你吃一壶的。事实上确实如此。学习OpenGL首先,先要弄明白的三个名词就是VAO,VBO和IBO。我们学习一个东西的时候,往往被过多,过详细的数据,淹没真正核心的那几句话,这可能也是不同人学习能力不一样的原因把,我应该属于学习...

2020-02-20 11:18:42 1651

原创 JAVA ByteBuffer理解小结

重要字段capacity:容量,最多容纳多少个字节limit: 0=<limit<=Capacityposition: 当前指针位置,从0向上增长。如果postion大于limit,Java会报出异常。重要方法get()获取一个数据,并且,移动positionget(i) 获取一个指定位置数据,但是,不移动positionremaining:还剩多少字...

2019-07-16 11:27:28 658

原创 Objective C 的property

最近因为某些蛋疼的原因,开始接触一些 IOS OC相关的玩意。今天踩到一个小小小坑。关于Objective C 的property,定义如下 @interface OCClass:NSObject{ id data; NSString* name;}-(id)initWithString:(NSString*)aName;@property int count;...

2019-07-04 15:44:53 163

原创 AnimationEvent 'XXX' has no receiver!

原因:在Animator所在的那个GameObject上,没有组件上没有与Animation的functionName字段对应的事件响应函数。Unity虽然可以直接编辑AnimationClip,然后发送动画事件,但是有一个问题是,如果美术调整动画,并重新上传,有需要再次绑定这个事件,所以我写了一个小脚本,让策划把绑定事件配在Prefab上,如下:using System.Collect...

2019-04-08 13:54:38 4533

原创 Unity扩展:DrawGizmo特性使用小结

最近有一个小需求,要为曲线绘制工具增加一个边界提示,如图:一开始我尝试在OnSceneGUI里面绘制,后来发现只要一取消选择这个GameObject,绘制就会消失,为了能够一直显示这个图形,需要使用到DrawGizmo这个特性,如下: [DrawGizmo(GizmoType.NonSelected | GizmoType.Selected | GizmoType.Pi...

2019-02-16 10:04:09 4628

原创 行为树基础概念

行为树基本原理

2017-12-29 10:14:25 3132 1

原创 OpenGL——理解SSAO

OpenGL SSAO 的理解

2017-12-22 15:18:48 998

原创 OpenGL——理解延迟着色法(上篇)

理解延迟着色法原理,优缺点。

2017-12-19 08:54:39 1491

原创 OpenGL——理解HDR与Bloom

HDR-与Bloom效果学习笔记

2017-12-13 11:18:20 1792

原创 OpenGL——对渲染的理解小结

学习OpenGl的阶段性小结

2017-12-11 16:46:45 1532

原创 OpenGL——理解切线空间

理解切线空间的来龙去脉

2017-12-10 16:12:53 1493

翻译 OpenGL流水线概览

最近回顾渲染流水线,把官网的概览翻译了一下,造福一下有需要的同学。

2017-12-01 14:32:50 894

原创 Unity3D 一种开放世界物件序列化方案

开放世界游戏,尤为生存游戏,玩家自由建筑系统是一个几乎必不可少的功能。就算不是建筑,那些循环生成的资源,也需要在保存的时候序列化到文件中去。比如一堵墙,需要在运行时保存他的位置,朝向和缩放等。如果是一个物品箱,还需要保存其保持的背包数据信息。所有者信息等等。同时这个系统还要满足插件式可扩展的需求。于是乎我设计了几版序列化和 反序列化开放世界物件的方案。最终采纳了下面的方案。

2017-10-22 12:45:19 1239

原创 OpenGL学习笔记——半反射,反射贴图

注:原教程:LearnOpenGL CN,我这个只是学习笔记!学习了天空盒,反射和折射这一章节之后,我打算动手搞一搞里面的练习作业。首先将6.2节的程序扩展为支持半反射贴图。图1是默认教程给的效果图:经过分析,如果想实现一个半透明的效果,需要以下步骤【1】增加纹理贴图【2】增加一个反射率参数,对颜色按照反射率进行混合计算(注意这里并不需要用到

2017-10-20 09:33:29 2006

原创 OpenGL 学习笔记——帧缓冲与后期处理

原文对应:LearnOpenGL CN-高级OpenGL-帧缓冲。【1】默认缓冲帧与帧缓冲:因为计算本身是消耗时间的,所以如果不采用双缓冲,则会出现图像闪烁的现象,有了双缓冲之后,显示前缓冲区,在后缓冲区绘图。然后交替交换显示,只要有一个拷贝的过程,就可以完成绘图。这个后缓冲区,就是OpenGL(或者DX也是一样)的默认缓冲区。诸如深度测试,模板测试,颜色混合这些,成果通过测试

2017-10-19 15:29:27 1963 1

原创 OpenGL学习笔记——Blending

注:本文档只记录要点和我自己的一些新得,并不是教程。需要教程的请去看OpenGLLearn原文。混合可以实现物体透明度。实现透明度由两种方式:1是抛弃(discard)一部分片段,这种情况下,不存在半透明的片段。2才是真正意义上的混合。将当前片段,和目标片段,按照一定的公式,进行加权计算。【1】#version 330 coreout vec4 FragColor

2017-10-19 09:54:12 541

原创 Opsive的ThirdPersonController使用手记(2)

目录:【1】建立武器类型和消耗品武器类型【2】建立武器类道具【3】调节枪的位置朝向,如何改变副手位置【4】调节绑定准星到这个武器上——————————————————正文【1】创建配置文件通过菜单Tools——ThridPersonController——ItemTypeBuilder可以创建物品类型。主要有4大类主武器,图1:消耗品,图2

2017-10-18 16:55:38 1935

原创 OpenGL学习笔记——StencilBuffer

StencilBuffer是模板缓冲,可以用来实现一些诸如描边,遮罩之类的操作。一开始我理解起来很费劲,后来结合几个例子,终于明白了使用StencilBuffer的要点。使用StencilBuffer,分为两大部分:【1】创建stencil Buffer 部分创建Stencil,用其他模型,遮罩等的片段,去创建stencil buffer。(遮罩也完全可以不被显示出来,只更

2017-10-18 10:40:22 748

原创 Opsive 的Third Person Controller使用手记(1)

Opsive的插件,我买了BehaviorDesigner和ThirdPersonController。不得不说他们的反盗版做的还是不错的,因为只有输入Invoice码才能获取到源代码:)。好吧,我也是为了源代码才入正的,不然正版一个插件好几百,对于中国基层码农来说还是很贵的。记录下来主要是为了方便自己回想。顺便学习一下这个插件的设计思想。(1)建立基础的TPS

2017-10-14 19:42:16 3977 2

原创 [吐槽贴]用惯了C#之后回过来用C++真的很不适应!

最近新买的AI方面的书还没邮到,抽点时间回顾一下OpenGL。虽然以前曾经尝试挑战过,不过学一遍之后,基本没剩下啥东西,做了几年游戏开发,很多概念有了更深入的理解,所以决定再挑战一次。起码已经三四年没写过C++代码了,心有点谎然而,第一步摔在了配置VS2015开发环境上。后来看了一些文章,看到这三句,顿时醒悟!使用一个库无非包含三个步骤:

2017-09-28 13:58:49 436 1

原创 Unity 动态为AnimationClip 注入事件的小工具类

需求来源:美术每次改动画,程序都要重新把AnimEvent加入AnimationClip一遍,这不科学。(其实这事情也可以给策划做,但是策划太蠢了。)于是我写了一个小工具类,可以动态注入Anim事件,只要AnimClip的名字不改,一切都会是那么的美好。配置图:代码如下:using System.Collections;using

2017-09-14 10:12:28 1370

原创 Unity PerlinNoise问题

最近在搞的随机地图生成器,用到了Unity的PerlinNoise函数由于我意外的设置了参数,导致PerlinNoise返回了完全相同的值。0.465xxxxxxx后来经过其他小伙伴和指点,原来PerlinNoise在两个参数都是整数的时候,确实会返回完全相同的值。于是我又增加了一个Scale变化参数。令他等于Pi/3之后生成的地图就不会出现这种问题了。

2017-07-27 11:16:28 1466

原创 Unity 从Apex学到的一种提高模块扩展性的方法

Apex有一种很好的扩展机制,当你不附加自定义脚本的时候,按照默认的Apex逻辑走,比如Steering算法。但是当你新建一个MonoBehavior脚本,并且实现了IMoveUnit方法之后。把这个脚本贴到原本的Unit的GameObecjt上的时候,就可以自动识别并执行扩展的Steering算法。研究了一下之后,发现这个过程是这样的。定义接口,在基本行为中实现这个接口,然后在O

2017-07-26 08:50:24 853

原创 Unity Apex寻路插件 与Mecanim动画结合。

最近寻找合适的寻路算法。目前主流的有三种选择。Unity自带的NavMesh。优点:原生寻路,整合性好,基于多边形网格的寻路,更精确,适合制作人数不是很多,但需求精度高,功能庞大的动作类游戏。缺点:慢,不适合做RTS,不能在运行时重新烘焙。A Star Project寻路算法(正版100刀,祖国版五块钱,淘宝有卖)一开始我也打算用这个,不过,看了一下网上的评价自己也简单

2017-07-24 15:28:28 1137

原创 Unity RayCast容易忽视的地方

最近用RayCast做自由建筑系统遇到两个平时没注意的地方。(1)RayCast默认是可以Cast到Trigger的,我以为不会,但是实际上,是可以的,如果要屏蔽掉Trigger,设置最后一个参数为: QueryTriggerInteraction.Ignore(2)官方给了一个Note,但是我没有注意到“Notes: Raycasts will not detect Co

2017-07-19 10:19:55 2369

原创 Unity 场景分页插件 World Streamer 支持无限大地图的解决方案(二)

Terrain Streaming可以用WorldCreator创建Tile地形,然后用WorldStreamer实现分块地图。比如10000*10000(16平方公里) 的地形,需要1000*1000的100个地块。如果每次加载9个格子,那么同时载入的地块大小为3000*3000大小——比一次加载100000*10000要省掉 90%的数据——如果直接加载10000*10000估计Unity

2017-07-18 14:28:15 11269

原创 Unity 场景分页插件 World Streamer 支持无限大地图的解决方案(一)

翻译官方文档加上自己的一些理解。参考:WorldStreamer官方文档。目标:将我自己的WorldManager与WorldStreamer结合,让WorldStreamer支持开放世界建筑系统。一、原理创建虚拟grid,将大世界分成小块管理。设置一个“参照点”(通常是Player,如果是RTS,则是Camera),当参照点足够接近某个虚拟格子,或碰到碰撞体时,将其异

2017-07-18 10:18:37 8969

原创 Unity CheckBox用法

public static bool CheckBox(Vector3 center, Vector3 halfExtents, Quaternion orientation = Quaternion.identity, int layermask = DefaultRaycastLayers, QueryTriggerInteractionqueryTriggerInteraction 

2017-07-12 16:38:36 5364

原创 Unity UGUI 拖拽跟随实现

IBeginDragHandler,IEndDragHandler,IDragHandler,IDropHandler首先要实现这个四个接口。其中OnDrag接口是用来处理图标跟随光标(手指在屏幕的位置)的UGUI实现拖拽比NGUI简单太多,再也不用各种InverseTransformPoint了。        public void OnDrag(Pointer

2017-06-21 15:04:39 3337

空空如也

空空如也

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

TA关注的人

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