Unity
文章平均质量分 71
WangHaoDiablo
D.VA爱你(づ ̄3 ̄)づ╭❤~呦。
展开
-
通过脚本向AnimClip添加动画事件
通过脚本向AnimClip添加动画事件最近我的独立游戏已经开始进入到了收尾阶段,所以开始需要大量的配置怪物了,那么怪物攻击通过动画事件回调来通知脚本层一些重要信息,比如,开启伤害判定,关闭伤害判定,通知脚本层本次攻击结束,可以让AI做下一个决断了,等等。如下所示:protected void OnAnimEvent(string param){ switch (param) { case "resetOnly":{ ...原创 2021-03-19 13:08:30 · 392 阅读 · 0 评论 -
Unity NavMesh 判断路径是否可达和路径长度计算
Unity NavMesh 判断路径是否可达和路径长度计算最近我的独立游戏已经接近尾声,估计过一段时间就将要上架Steam了,还是有点小兴奋。希望大家能够多多支持:)在设计人物移动的时候,我遇到一个问题,如图:像这种高底层的寻路情况,如果道路被挡上,当我点击人物的时候,人物会直接跑到地下部分X的正下方。这是因为Unity默认寻路对这种上下分层的寻路规则是,寻找一个垂直方向的接近点。这不是我想要的效果,像这种情况出现的时候,我希望能直接提示玩家,目标不可达,查了一下Uni...原创 2021-03-11 11:31:59 · 3238 阅读 · 5 评论 -
Opsive Ultimate Character Controller(2)装备道具的要点
官方文档是英语的,写的还算不错,但是有些应该明确强调的地方写的很泛泛,英语水平还算勉强可以的我看的都十分费劲。于是总结一个小文档,重点解决一个问题。Opsive Controller的装备系统概要本文的前提是你对文档有个大概了解,但是有些还不是特别清晰的情况,完全不看官方文档和视频,看这篇似乎也没多大用。 一个ItemType可以对应多把武器吗? 不可以,因为一个ItemType只能对应一个武器,添加武器的时候用的是ItemType,不是你具体的武器。 动态生成好,还原创 2020-07-20 10:00:34 · 803 阅读 · 0 评论 -
Json.Net简要测试
一、分析最近写开放世界沙盒游戏,需要把整个世界序列化,反序列化。可选方案有1-C#自带的序列化工具-直接序列化成2进制文件,缺点是不支持Dictionay,Vector3等复杂对象的支持。有点是比较快,而且不需要引入其他插件。可以增加字段,但是不能删除字段。2-自己写文本序列化:优点,灵活。缺点,麻烦。3-使用Protobuf序列化:优点,快,省空间,但是我又不是发网络协议,用不着你省空间。缺点:需要自己定义PB结构体,生成一堆烂七八糟的代码。4-Json.Net这是我最后选择的方案原创 2020-07-13 10:58:27 · 230 阅读 · 0 评论 -
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 · 1535 阅读 · 0 评论 -
Opsive Ultimate Character Controller 使用经验(一)添加一个跳舞的Ability
今天检错Opsive的时候,无意间看到有人把我的文章转到腾讯的文章版面去了,虽然没有注明原文地址,不过看到自己的文章被转载,还是有点小激动的,于是决定今天在写一篇:)为了文章观感,图片就不加水印了,希望转载的人自觉填上原文地址,WangHaoDiablo原创文章:)实战:使用UCC做一个跳舞的逻辑 需求:玩家按下逗号,开始跳舞,再按下一次逗号,停止跳舞。 创建一个类 using UnityEngine;using Opsive.UltimateCharacterC..原创 2020-07-03 15:49:24 · 1636 阅读 · 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 · 4660 阅读 · 0 评论 -
OpenGL——对渲染的理解小结
学习OpenGl的阶段性小结原创 2017-12-11 16:46:45 · 1589 阅读 · 0 评论 -
OpenGL——理解HDR与Bloom
HDR-与Bloom效果学习笔记原创 2017-12-13 11:18:20 · 1864 阅读 · 0 评论 -
OpenGL——理解SSAO
OpenGL SSAO 的理解原创 2017-12-22 15:18:48 · 1048 阅读 · 0 评论 -
OpenGL——理解延迟着色法(上篇)
理解延迟着色法原理,优缺点。原创 2017-12-19 08:54:39 · 1538 阅读 · 0 评论 -
行为树基础概念
行为树基本原理原创 2017-12-29 10:14:25 · 3190 阅读 · 1 评论 -
Unity扩展:DrawGizmo特性使用小结
最近有一个小需求,要为曲线绘制工具增加一个边界提示,如图:一开始我尝试在OnSceneGUI里面绘制,后来发现只要一取消选择这个GameObject,绘制就会消失,为了能够一直显示这个图形,需要使用到DrawGizmo这个特性,如下: [DrawGizmo(GizmoType.NonSelected | GizmoType.Selected | GizmoType.Pi...原创 2019-02-16 10:04:09 · 4721 阅读 · 0 评论 -
AnimationEvent 'XXX' has no receiver!
原因:在Animator所在的那个GameObject上,没有组件上没有与Animation的functionName字段对应的事件响应函数。Unity虽然可以直接编辑AnimationClip,然后发送动画事件,但是有一个问题是,如果美术调整动画,并重新上传,有需要再次绑定这个事件,所以我写了一个小脚本,让策划把绑定事件配在Prefab上,如下:using System.Collect...原创 2019-04-08 13:54:38 · 4958 阅读 · 0 评论 -
OpenGL——理解切线空间
理解切线空间的来龙去脉原创 2017-12-10 16:12:53 · 1574 阅读 · 0 评论 -
Unity3D 一种开放世界物件序列化方案
开放世界游戏,尤为生存游戏,玩家自由建筑系统是一个几乎必不可少的功能。就算不是建筑,那些循环生成的资源,也需要在保存的时候序列化到文件中去。比如一堵墙,需要在运行时保存他的位置,朝向和缩放等。如果是一个物品箱,还需要保存其保持的背包数据信息。所有者信息等等。同时这个系统还要满足插件式可扩展的需求。于是乎我设计了几版序列化和 反序列化开放世界物件的方案。最终采纳了下面的方案。原创 2017-10-22 12:45:19 · 1293 阅读 · 0 评论 -
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 · 11443 阅读 · 0 评论 -
Unity RayCast容易忽视的地方
最近用RayCast做自由建筑系统遇到两个平时没注意的地方。(1)RayCast默认是可以Cast到Trigger的,我以为不会,但是实际上,是可以的,如果要屏蔽掉Trigger,设置最后一个参数为: QueryTriggerInteraction.Ignore(2)官方给了一个Note,但是我没有注意到“Notes: Raycasts will not detect Co原创 2017-07-19 10:19:55 · 2453 阅读 · 0 评论 -
Unity Apex寻路插件 与Mecanim动画结合。
最近寻找合适的寻路算法。目前主流的有三种选择。Unity自带的NavMesh。优点:原生寻路,整合性好,基于多边形网格的寻路,更精确,适合制作人数不是很多,但需求精度高,功能庞大的动作类游戏。缺点:慢,不适合做RTS,不能在运行时重新烘焙。A Star Project寻路算法(正版100刀,祖国版五块钱,淘宝有卖)一开始我也打算用这个,不过,看了一下网上的评价自己也简单原创 2017-07-24 15:28:28 · 1202 阅读 · 0 评论 -
Google In-App Billing 实现(内含Unity 实现经验)
实现内购计费傻逼目录Adding the AIDL fileUpdating Your ManifestCreating a ServiceConnectionMaking In-app Billing RequestsQuerying Items Available for PurchasePurchasing an ItemQuerying Purchased翻译 2016-08-04 08:16:22 · 4620 阅读 · 1 评论 -
Unity5.3+ 在UGUI 上使用 粒子特效
UGUI ParticleSystem 夹心原创 2016-08-03 14:58:55 · 18587 阅读 · 1 评论 -
Unity 制作类似RadiusFill 的SpriteRanderer Shader
先搞到SpriteDefault的官方Shader,然后开始修改。Shader "Sprites/Fill"{ Properties { [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} _Color ("Tint", Color) = (1,1,1,原创 2016-08-03 14:14:31 · 2121 阅读 · 0 评论 -
Unity 从Apex学到的一种提高模块扩展性的方法
Apex有一种很好的扩展机制,当你不附加自定义脚本的时候,按照默认的Apex逻辑走,比如Steering算法。但是当你新建一个MonoBehavior脚本,并且实现了IMoveUnit方法之后。把这个脚本贴到原本的Unit的GameObecjt上的时候,就可以自动识别并执行扩展的Steering算法。研究了一下之后,发现这个过程是这样的。定义接口,在基本行为中实现这个接口,然后在O原创 2017-07-26 08:50:24 · 903 阅读 · 0 评论 -
Unity PerlinNoise问题
最近在搞的随机地图生成器,用到了Unity的PerlinNoise函数由于我意外的设置了参数,导致PerlinNoise返回了完全相同的值。0.465xxxxxxx后来经过其他小伙伴和指点,原来PerlinNoise在两个参数都是整数的时候,确实会返回完全相同的值。于是我又增加了一个Scale变化参数。令他等于Pi/3之后生成的地图就不会出现这种问题了。原创 2017-07-27 11:16:28 · 1541 阅读 · 0 评论 -
Unity 动态为AnimationClip 注入事件的小工具类
需求来源:美术每次改动画,程序都要重新把AnimEvent加入AnimationClip一遍,这不科学。(其实这事情也可以给策划做,但是策划太蠢了。)于是我写了一个小工具类,可以动态注入Anim事件,只要AnimClip的名字不改,一切都会是那么的美好。配置图:代码如下:using System.Collections;using原创 2017-09-14 10:12:28 · 1404 阅读 · 0 评论 -
OpenGL学习笔记——StencilBuffer
StencilBuffer是模板缓冲,可以用来实现一些诸如描边,遮罩之类的操作。一开始我理解起来很费劲,后来结合几个例子,终于明白了使用StencilBuffer的要点。使用StencilBuffer,分为两大部分:【1】创建stencil Buffer 部分创建Stencil,用其他模型,遮罩等的片段,去创建stencil buffer。(遮罩也完全可以不被显示出来,只更原创 2017-10-18 10:40:22 · 814 阅读 · 0 评论 -
Opsive的ThirdPersonController使用手记(2)
目录:【1】建立武器类型和消耗品武器类型【2】建立武器类道具【3】调节枪的位置朝向,如何改变副手位置【4】调节绑定准星到这个武器上——————————————————正文【1】创建配置文件通过菜单Tools——ThridPersonController——ItemTypeBuilder可以创建物品类型。主要有4大类主武器,图1:消耗品,图2原创 2017-10-18 16:55:38 · 2036 阅读 · 0 评论 -
Opsive 的Third Person Controller使用手记(1)
Opsive的插件,我买了BehaviorDesigner和ThirdPersonController。不得不说他们的反盗版做的还是不错的,因为只有输入Invoice码才能获取到源代码:)。好吧,我也是为了源代码才入正的,不然正版一个插件好几百,对于中国基层码农来说还是很贵的。记录下来主要是为了方便自己回想。顺便学习一下这个插件的设计思想。(1)建立基础的TPS原创 2017-10-14 19:42:16 · 4110 阅读 · 2 评论 -
OpenGL学习笔记——Blending
注:本文档只记录要点和我自己的一些新得,并不是教程。需要教程的请去看OpenGLLearn原文。混合可以实现物体透明度。实现透明度由两种方式:1是抛弃(discard)一部分片段,这种情况下,不存在半透明的片段。2才是真正意义上的混合。将当前片段,和目标片段,按照一定的公式,进行加权计算。【1】#version 330 coreout vec4 FragColor原创 2017-10-19 09:54:12 · 595 阅读 · 0 评论 -
Unity CheckBox用法
public static bool CheckBox(Vector3 center, Vector3 halfExtents, Quaternion orientation = Quaternion.identity, int layermask = DefaultRaycastLayers, QueryTriggerInteractionqueryTriggerInteraction原创 2017-07-12 16:38:36 · 5453 阅读 · 0 评论