unity开发
文章平均质量分 56
菰城茧
这个作者很懒,什么都没留下…
展开
-
Unity中使用RenderTexture判断不规则形状按钮的点击
对于判断不规则形状的按钮的点击,一般使用的方式是:1. 打开按钮图片的“Read/Write Enabled”选项,并设置图片的img.alphaHitTestMinimumThreshold来判断alpha低于阈值的区域响应点击;2. 使用 PolygonCollider2D 并重写 Image 的 IsRaycastLocationValid 方法来判断;但是上述方法都有各自的缺点,第一种方法开启 Read/Write 之后会使图片的内存占用翻倍,并且不支持Crunched压缩图片格式,第二种方原创 2022-03-07 16:05:40 · 3611 阅读 · 0 评论 -
Unity3d URP 渲染管线和 Built in 渲染管线中 shader 的区别
URP使用HLSL语言;BIPR使用CG语言URP 的SubShader的Tags中需要添加"RenderPipeline" = “UniversalPipeline”URP使用单一的forward通道,多个光照通过数组形式传入;BIPR每一个光照跑一个pass合批流程不同,URP给每个不同的材质球建立持久化数据在gpu中,每一个shader变体一次合批,无论多少材质球;URP每一个材质球一次合批(下图)CBUFFER_START, CBUFFER_ENDURP需要定义取样器S..原创 2021-10-20 17:04:57 · 4017 阅读 · 0 评论 -
Unity3D URP中使用Render Feature实现后处理效果
unity urp 自带了一个后处理组件Volume,提供了不少后处理效果:除此之外,Render Feature 也可以实现类似的效果,并且自由度更高。使用方式是,在RenderPiplineAsset 中的Renderer中新增Feature,下面举例说明如何通过Feature增加一个KawaseBlur的后处理效果。首先写一个自定义的Feature脚本:using System.Collections.Generic;using UnityEngine;using UnityEngin原创 2021-10-20 15:30:22 · 7238 阅读 · 0 评论 -
Unity 中的指向功能(动画中的骨骼指向,任意轴指向目标)
unity中实现任意轴持续指向目标功能,可在动画系统中使用原创 2020-02-25 11:53:20 · 1185 阅读 · 0 评论 -
Unity3d 编写编辑器自定义插件(1)
Unity3D的运行时和编辑器类分别存储在不同的Assemblies里:UnityEngine和UnityEditor。由于编辑器插件是独立于游戏之外的,因此需要在assets文件夹下建立Editor目录来存放自定义插件的代码。需要注意的是Editor文件夹是被编辑器智能识别的,可以是其他文件夹的子文件夹,并且可以存在多个,这样就给我们安排文件结构提供了便利。原创 2016-02-19 18:00:03 · 1516 阅读 · 0 评论 -
Unity3d 编写编辑器自定义插件(2)
EditorWindow:编辑器窗口类需要继承的基类public class EditorWindowExample : EditorWindow{ [MenuItem("Example/Open Window")] static void Init() { var window = GetWindow<EditorWindowExample>(); window.positi原创 2016-09-29 17:58:57 · 611 阅读 · 0 评论 -
在Unity中通过NGUI UITexture制作动态聊天表情
游戏中的聊天系统一般都有发送动态表情的需求,而unity本身是不支持gif这种动态图片格式的,如果用unity自带的animation来制作帧动画是可以做出动态表情效果的,但是编辑animation帧(不管是动态生成还是提前制作好)都是比较麻烦的事情。而动态的修改UITexture中的UV坐标可以很方便的实现动图效果,还可以随时修改。 方法也很简单,制作一个prefab,挂上ngui的UIText原创 2016-11-11 17:29:01 · 2661 阅读 · 0 评论 -
NGUI聊天信息中插入动态表情
聊天系统中难免需要加入动态表情来增加表现力,而使用NGUI中自带的表情系统有些局限:一是只能使用静态表情,二是需要制作字体图集,不能使用动态图集。所以需要另外寻找方法实现聊天文字中插入动态表情的效果。 经过寻找,找到两种实现方法: 一种是继续使用NGUI的Emoji系统,然后同一个表情的每一帧作为一个符号记录到字体图集中,然后用代码动态更换文字,实现表情的动态变化,类似下图: 其中*1,*原创 2016-11-28 16:00:09 · 1107 阅读 · 0 评论 -
NGUI中计算UILabel中每个文字的具体位置
在游戏中有时候会碰到这样的需求,在Label中显示的文字中,部分文字需要有交互效果,比如点击地图位置文字可以自动寻路,点击聊天信息中的道具名称可以显示道具详情之类的。 解决这类问题,要么是将相应的文字做成button覆盖在文字上方,或者直接在对应的文字位置设置碰撞框,添加点击事件。不管如何都需要计算出label中一些特定文字的相对位置,才可以将碰撞框(或者表情之类的图片)放到正确的位置。原创 2017-01-11 12:16:18 · 2471 阅读 · 0 评论 -
NGUI 通过shader设置图片置灰效果
NGUI中的Button几乎是最常用到的控件之一,并且可以组合各种组件(比如UIButtonColor,UIButtonOffset,UITweenxx),方便设置Button的各种状态下的属性,几乎可以满足我们的所有需求。但是对于当Button的isEnabled属性设置为false时,根据设置的disableColor属性设置不可点击时的颜色时,虽然我们设置的灰色,但并不是我们想象中的样子!转载 2017-01-12 10:18:45 · 585 阅读 · 0 评论 -
Unity着色器常用关键字及属性
Shader这是shader的根命令SubShader这个是子着色器,一个Shader里面可以有多个SubShaderProperties属性块常用属性语法 说明name(“display name”,Range(min,max)=number) 定义一个范围值name(“display name”,Color=(number,number,number,number) 定义颜色...转载 2018-12-20 10:24:22 · 1138 阅读 · 0 评论 -
Unity中法线的实现细节
原文:https://blog.csdn.net/candycat1992/article/details/41605257写在前面写这篇的目的是为了总结我长期以来的混乱。虽然题目是“法线纹理的实现细节”,但其实我想讲的是如何在shader中编程正确使用法线进行光照计算。这里面最让人头大的就是各种矩阵运算和坐标系之间的转换,很容易因为坐标系错误而造成光照结果的错误。我们将要讨论以下几个问题:...转载 2018-12-20 20:34:20 · 2756 阅读 · 0 评论 -
ShaderForge简单实例1
这篇文章主要用一个例子来展示shaderforge的原理。 这个例子来自shaderforge作者的视频教程,地址:官网教程如果要将一个贴图平铺到一个物体上,可以如图设置: 这里将UV参考线乘以一个固定值,作为贴图的UV参数,就将原来只有一个方框形状的贴图重复了8*8次。重复的次数就是作为参数的这个固定值。当然这里的UV参考线是和模型相关的。第二个例子,将两张贴图以一定的形式融合显示:原创 2016-09-02 11:02:14 · 1825 阅读 · 0 评论 -
Unity发布安卓包之后出现dll无法调用问题
今天出安装包出现了一个问题,在这里记录下。 游戏中使用了一个用.net 3.5写的dll,用来做前后端共享代码的,在unity编辑器上可以正常运行游戏,但是除了apk包之后在安卓机上运行就会出现TypeLoadException,无法读取dll中的类。 经过各种检查发现,原因是该dll的后缀是.Dll而不是.dll。这个大小写区分在pc上没有问题,但是打包到安卓之后就会造成无法识别,不知道是安卓原创 2016-09-13 15:31:48 · 1336 阅读 · 0 评论 -
Unity发布安卓包之后出现dll无法调用问题
今天出安装包出现了一个问题,在这里记录下。 游戏中使用了一个用.net 3.5写的dll,用来做前后端共享代码的,在unity编辑器上可以正常运行游戏,但是除了apk包之后在安卓机上运行就会出现TypeLoadException,无法读取dll中的类。 经过各种检查发现,原因是该dll的后缀是.Dll而不是.dll。这个大小写区分在pc上没有问题,但是打包到安卓之后就会造成无法识别,不知道是安卓原创 2016-09-13 15:31:05 · 3960 阅读 · 0 评论 -
Unity3D中继承MonoBehaviour的类中会被引擎自动调用的方法
在Unity中有很多方法是会被引擎在特定的时候自动调用的. 在VS里写这些方法的时候看不到它们被调用的次数,其实是引擎通过反射的方法调用的。 很多方法被调用都是有条件的,如OnTriggerEnter()就需要gameObject上有collider并且勾选上is trigger。 Update(): 当MonoBehaviour启用时,其Update在每一帧被调用。LateUpdate(转载 2015-12-10 15:54:47 · 1434 阅读 · 0 评论 -
Unity3D AI角色移动和自动跟随
AI角色按照一定的移动逻辑进行移动时,AI逻辑处理角色需要移动的位置,还需要移动逻辑实时处理角色的当前速度和角度。官方的示例中角色的移动是通过设置速度之后,依靠动画的位移来实现的,所以代码中只需要设置角色的速度和角度即可。Animator控件中的Apply Root Motion需要勾选,这样才能使用动画中的位移,而不需要在代码中更新角色坐标,勾选之后也不能通过代码更新了。其中的nav是绑定在角色身原创 2015-12-15 11:58:17 · 9949 阅读 · 2 评论 -
Unity3d中的属性(Attributes)整理
Unity3d中的属性整理原创 2015-11-26 11:28:38 · 657 阅读 · 0 评论 -
Unity3D 巡逻敌兵探测玩家逻辑实现
在一些射击,潜入,动作类游戏中,创关的时候总是会有敌兵守卫在某处,或者在一定范围内巡逻。这时候AI的逻辑就需要一个算法来判断何时攻击玩家或者何时发现玩家。一般的ARPG也许对此要求不高,只要玩家进入敌人的一定范围内(一个以敌人为中心的碰撞框)就开始攻击玩家。潜入类游戏还需要按照玩家发出的声音来搜索玩家。判断士兵是否听到声音需要符合两个条件,一个是有发声源,一个是发生源到士兵的距离在士兵的听觉范围内。转载 2015-12-15 11:08:56 · 4669 阅读 · 1 评论 -
Unity3D 控制角色移动,转向和自动跟随
Unity3D 角色转向和自动跟随通过挂载脚本控制3D人物的移动和转向,先上一个官方的例子:这里只有转向而没有移动的方法,看了下原工程,移动是做在动画中的,只要执行了动画就会跟着移动,而且每迈出一步的距离是固定的。如果移动没有做在动画里只要像旋转一样添加一个位移的变化就行了,下面是自己的例子:代码块以下例子仅记录下大致的方法,尚需测试,这里可以处理多个按键同时按下的情况:using UnityEng原创 2015-11-20 16:58:09 · 10861 阅读 · 0 评论 -
Unity3D 摄像机平滑跟随角色
摄像机平滑跟随角色移动的解决方案原创 2015-12-15 10:43:57 · 2621 阅读 · 0 评论 -
Unity3D 碰撞检测的条件和相关组件
碰撞条件:CharacterController Rigidbody Collider转载 2015-12-01 17:27:54 · 3586 阅读 · 0 评论 -
Unity3D UGUI中Rect Transform的特性
Rect TransformRect Transform 是 2D 与 3D 图形元素空间位置组件,继承自transform(当手动移除后就会还原成transform)。主要用来设置UI界面中元素的大小、 位置和旋转。原创 2015-12-03 16:48:37 · 1367 阅读 · 0 评论 -
Unity3D 关于资源加载(Resources和AssetBundle)和内存管理
Unity3D 的动态加载机制,本地加载和远端加载以及简单的内存管理转载 2015-12-07 16:52:03 · 6554 阅读 · 0 评论 -
在unity中序列化储存游戏元素
由于unity在运行时只能动态加载Resources目录下的文件,但是在有的情况下一些资源不能直接放在Resources目录下(比如UGUI的需要打包的散图)。如果需要动态加载在Resources目录外的游戏资源时,可以序列化资源的引用,将其储存在prefab上之后放在Resources目录下。原创 2016-01-28 12:34:47 · 2053 阅读 · 0 评论 -
UGUI Unity内建UI系统的认识和一些问题的解决方案
UGUI 的相关控件和简要使用说明原创 2016-01-14 17:47:14 · 2118 阅读 · 0 评论 -
在游戏中实现语音聊天和语音转化成文字
如何在游戏中添加语音聊天功能,并且需要将语音转化成文本信息原创 2016-03-31 17:51:19 · 5282 阅读 · 3 评论 -
Unity3D的射线检测Physics.Raycast
Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo); Camera.main.ScreenPointToRay()原创 2015-12-10 12:28:06 · 1154 阅读 · 0 评论