- 博客(47)
- 资源 (13)
- 收藏
- 关注
原创 Unity中使用RenderTexture判断不规则形状按钮的点击
对于判断不规则形状的按钮的点击,一般使用的方式是:1. 打开按钮图片的“Read/Write Enabled”选项,并设置图片的img.alphaHitTestMinimumThreshold来判断alpha低于阈值的区域响应点击;2. 使用 PolygonCollider2D 并重写 Image 的 IsRaycastLocationValid 方法来判断;但是上述方法都有各自的缺点,第一种方法开启 Read/Write 之后会使图片的内存占用翻倍,并且不支持Crunched压缩图片格式,第二种方
2022-03-07 16:05:40
3718
原创 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
4361
原创 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
7634
转载 Unity中法线的实现细节
原文:https://blog.youkuaiyun.com/candycat1992/article/details/41605257写在前面写这篇的目的是为了总结我长期以来的混乱。虽然题目是“法线纹理的实现细节”,但其实我想讲的是如何在shader中编程正确使用法线进行光照计算。这里面最让人头大的就是各种矩阵运算和坐标系之间的转换,很容易因为坐标系错误而造成光照结果的错误。我们将要讨论以下几个问题:...
2018-12-20 20:34:20
2874
转载 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
1227
原创 C#中的集合类整理
System.Collections: ArrayList:实现了IList接口的类,可以储存任意类型(object)的value,可索引。 BitArray:记录布尔值的数组,可以用bool[]或者int[]作为参数使用它的构造函数。可索引。 Queue:先进先出的队列,可以储存任意类型(object)的value,操作元素的方法有Enqueue,Dequeue和Peek。不可索引。 St
2017-02-09 16:52:41
409
翻译 简单理解和应用程序中的位运算符
位运算符在实际项目中使用的比较少,但是由于效率高,并且有助于理解程序底层,还有有理解的必要的,我之前一直都位运算符比较疑惑,做了些算法题之后渐渐理解了。 按位与:”&” 例子: 2 (0010) & 7 (0111) => 2 (0010) 按位异或 :”^” 例子: 2 (0010) ^ 7 (0111) => 5 (0101) 按位或: “|” 例子:2 (0010) | 7 (0
2017-02-07 16:11:22
288
转载 NGUI 通过shader设置图片置灰效果
NGUI中的Button几乎是最常用到的控件之一,并且可以组合各种组件(比如UIButtonColor,UIButtonOffset,UITweenxx),方便设置Button的各种状态下的属性,几乎可以满足我们的所有需求。但是对于当Button的isEnabled属性设置为false时,根据设置的disableColor属性设置不可点击时的颜色时,虽然我们设置的灰色,但并不是我们想象中的样子!
2017-01-12 10:18:45
621
原创 NGUI中计算UILabel中每个文字的具体位置
在游戏中有时候会碰到这样的需求,在Label中显示的文字中,部分文字需要有交互效果,比如点击地图位置文字可以自动寻路,点击聊天信息中的道具名称可以显示道具详情之类的。 解决这类问题,要么是将相应的文字做成button覆盖在文字上方,或者直接在对应的文字位置设置碰撞框,添加点击事件。不管如何都需要计算出label中一些特定文字的相对位置,才可以将碰撞框(或者表情之类的图片)放到正确的位置。
2017-01-11 12:16:18
2566
原创 NGUI聊天信息中插入动态表情
聊天系统中难免需要加入动态表情来增加表现力,而使用NGUI中自带的表情系统有些局限:一是只能使用静态表情,二是需要制作字体图集,不能使用动态图集。所以需要另外寻找方法实现聊天文字中插入动态表情的效果。 经过寻找,找到两种实现方法: 一种是继续使用NGUI的Emoji系统,然后同一个表情的每一帧作为一个符号记录到字体图集中,然后用代码动态更换文字,实现表情的动态变化,类似下图: 其中*1,*
2016-11-28 16:00:09
1188
原创 在Unity中通过NGUI UITexture制作动态聊天表情
游戏中的聊天系统一般都有发送动态表情的需求,而unity本身是不支持gif这种动态图片格式的,如果用unity自带的animation来制作帧动画是可以做出动态表情效果的,但是编辑animation帧(不管是动态生成还是提前制作好)都是比较麻烦的事情。而动态的修改UITexture中的UV坐标可以很方便的实现动图效果,还可以随时修改。 方法也很简单,制作一个prefab,挂上ngui的UIText
2016-11-11 17:29:01
2794
原创 java环境配置,命令行编译和生成jar包
安装: 在官网下载对应版本,并安装jdk。注意jdk安装有两次目录选择,分别是jre和jdk,最好安装在一起。 设置系统环境变量: 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.8.0_65 变量名:Path 变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 变量名:CLASSPATH 变量值:.;%JAVA
2016-11-09 11:52:28
344
转载 (转)MVC,MVP 和 MVVM 的区别
原帖地址复杂的软件必须有清晰合理的架构,否则无法开发和维护。 MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了。
2016-10-14 17:37:14
266
原创 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
655
原创 Unity发布安卓包之后出现dll无法调用问题
今天出安装包出现了一个问题,在这里记录下。 游戏中使用了一个用.net 3.5写的dll,用来做前后端共享代码的,在unity编辑器上可以正常运行游戏,但是除了apk包之后在安卓机上运行就会出现TypeLoadException,无法读取dll中的类。 经过各种检查发现,原因是该dll的后缀是.Dll而不是.dll。这个大小写区分在pc上没有问题,但是打包到安卓之后就会造成无法识别,不知道是安卓
2016-09-13 15:31:48
1426
原创 Unity发布安卓包之后出现dll无法调用问题
今天出安装包出现了一个问题,在这里记录下。 游戏中使用了一个用.net 3.5写的dll,用来做前后端共享代码的,在unity编辑器上可以正常运行游戏,但是除了apk包之后在安卓机上运行就会出现TypeLoadException,无法读取dll中的类。 经过各种检查发现,原因是该dll的后缀是.Dll而不是.dll。这个大小写区分在pc上没有问题,但是打包到安卓之后就会造成无法识别,不知道是安卓
2016-09-13 15:31:05
4103
原创 ShaderForge简单实例2
本篇实例介绍下shaderforge官网演示的基本光照模型,在编辑器中的实现过程。 官网教程地址 (由于编辑器操作简单,这里就不再赘述了,直接放上编辑好的设置图)1.无遮挡的简单光照:(亮度颜色只和与光源的距离相关,不会被遮挡) 以下是这个shader的效果图: 2.带遮挡的简单光照效果: 以下是这个shader的效果图: 3.简单的法线贴图设置:4.简单的环境光设置:5.基础lambe
2016-09-09 11:15:21
992
原创 ShaderForge简单实例1
这篇文章主要用一个例子来展示shaderforge的原理。 这个例子来自shaderforge作者的视频教程,地址:官网教程如果要将一个贴图平铺到一个物体上,可以如图设置: 这里将UV参考线乘以一个固定值,作为贴图的UV参数,就将原来只有一个方框形状的贴图重复了8*8次。重复的次数就是作为参数的这个固定值。当然这里的UV参考线是和模型相关的。第二个例子,将两张贴图以一定的形式融合显示:
2016-09-02 11:02:14
1863
原创 Shader Forge 基础使用方法
shader forge 是一个基于Unity3d编辑器的插件,可以在unity assets store找到,是一款非常方便的,shader可视化编辑工具,可以通过拖拽编辑shader,并且可以实时看到效果。安装完shader forge插件之后,可以通过unity菜单栏的window->shader forge来打开shader forge编辑器面板
2016-08-26 11:46:17
7396
1
原创 Lua string.sub截取UTF8 中英混合字符
在使用Lua的过程中,经常会遇到需要截取字符串或者获得字符串真实长度的情况,而Lua自带的string.sub()对于中文字符会当作3个字符来处理,截取时会造成乱码。所以需要自己改造下,一下方法是我改编的SubString方法,经测试可以识别中英混合的字符串,不管是英文字符还是中文字符都当作一个字符来计算index,并且可以像系统的string.sub()一样使用负数来从末尾截取字符。
2016-08-17 17:13:45
10423
6
原创 Unity3d shader -- fixed function shader
这种shader种类简单,效果单一 主要包含: properties, material, lighting, settexture, pass(通道) 样式: SubShader{ [propertie] subshader{} [fallback] }
2016-06-24 17:45:03
412
原创 Unity Shader--简介
unity的shader大致分为如下几类: 最容易上手的Surface Shader,他只能用CG/HLSL语言来编写. 较为复杂但可以深度定制的Vertex Shader和Fragment Shader,可以选择Cg/HLSL,GLSL等等。1.Surface Shader:他可以大概的看成Unity预置的Shader模板,通常只理物体的表面表现(例如高光,反射等等)。正如Unity官方所说:
2016-06-16 15:11:02
618
原创 Lua系统函数
math: sin.asin.deg… 随机数:math.random()无参数时生成[0,1)的随机数,整数参数的话生成[1,参数]的整数随机数;math.randomseed(seed) 使用种子生成随机数table: t = {10, 20, 30} table.insert(t, 1, 15) t 就变成了{15, 10, 20, 30} 如果没有第二个参数,就自动添加到tabl
2016-05-06 15:14:34
728
原创 Lua面向对象
lua没有class的概念,但是可以直接继承其他对象 单继承: base = { a = 1 , funca = function() return " base " end} function base:new(o) local o = o or {} setmetatable(o, self) self.__index
2016-04-29 17:12:15
370
原创 Lua模块处理
简单的模块编写: complex = {} --这种是公共方法 function complex.new() ... end --这种是私有方法 local function inv() ... end return complex这就是一个完整的模块了,如果在其他地方使用这个模块可以用如下代码调用:
2016-04-29 17:06:16
476
原创 Lua垃圾回收和弱引用
lua有自动的内存管理机制,只需要创建对象,无需删除,当没有该对象的引用的时候(引用未nil),lua就会释放内存,但是有的时候会保存一些不必要的引用,为了让这种引用不影响垃圾回收,可以设置成弱引用。 强制垃圾回收的方法: collectgarbage() 将table设置成弱引用: setmetatable(table, {__mode = “kv”}) 这里就是将key和va
2016-04-29 17:04:16
1599
原创 SublimeText 配置lua开发环境
由于现在开发的unity项目要用ulua做热更新,所以现在大部分的逻辑都需要用lua来写。 之前用惯了在vs中写C#,现在写起lua来觉得怎么着都不顺手,因为没有代码提示,没有跳转定义,没有语法错误提示,总之就是什么都没有,再加上lua是解释型语言,变量都没有类型,所以完全不知道自己写下去的是对是错,只有编译了启动游戏才能知道错在哪一行,实在是蛋疼。 所以我就想办法优化下lua的开发环境,选了半
2016-04-15 12:30:24
1573
原创 C#中List的浅复制和深复制
今天在游戏中碰到一个排序问题,就是有一个装备列表,是和服务器完全一致的,各种协议需要用到装备在这个列表中的序号。但是界面显示的时候需要按照各种方式来排序,但是不能在原来的列表上排序。因此需要复制出一个列表来,但是如何去复制这个列表,既能实现排序之后不会影响源列表,又要在排序之后,可以从原列表中找到装备的序号。所以顺便整理了下list的各种复制的区别。
2016-03-04 17:22:59
6691
原创 Unity3d 编写编辑器自定义插件(1)
Unity3D的运行时和编辑器类分别存储在不同的Assemblies里:UnityEngine和UnityEditor。由于编辑器插件是独立于游戏之外的,因此需要在assets文件夹下建立Editor目录来存放自定义插件的代码。需要注意的是Editor文件夹是被编辑器智能识别的,可以是其他文件夹的子文件夹,并且可以存在多个,这样就给我们安排文件结构提供了便利。
2016-02-19 18:00:03
1619
原创 在unity中序列化储存游戏元素
由于unity在运行时只能动态加载Resources目录下的文件,但是在有的情况下一些资源不能直接放在Resources目录下(比如UGUI的需要打包的散图)。如果需要动态加载在Resources目录外的游戏资源时,可以序列化资源的引用,将其储存在prefab上之后放在Resources目录下。
2016-01-28 12:34:47
2121
原创 C# 本地储存文本的几种方式
游戏中经常会有本地储存信息的需求,一般会使用xml和json两种格式,更简单的信息也会有txt直接存。 xml是比较繁琐的方式,因为每条信息都需要自己手动编写。上代码先: public void SaveRecordFiles() { XmlDoc = new XmlDocument(); XmlRoot = XmlDoc.CreateElement(
2015-12-28 17:04:14
3040
原创 Unity3D AI角色移动和自动跟随
AI角色按照一定的移动逻辑进行移动时,AI逻辑处理角色需要移动的位置,还需要移动逻辑实时处理角色的当前速度和角度。官方的示例中角色的移动是通过设置速度之后,依靠动画的位移来实现的,所以代码中只需要设置角色的速度和角度即可。Animator控件中的Apply Root Motion需要勾选,这样才能使用动画中的位移,而不需要在代码中更新角色坐标,勾选之后也不能通过代码更新了。其中的nav是绑定在角色身
2015-12-15 11:58:17
10240
1
转载 Unity3D 巡逻敌兵探测玩家逻辑实现
在一些射击,潜入,动作类游戏中,创关的时候总是会有敌兵守卫在某处,或者在一定范围内巡逻。这时候AI的逻辑就需要一个算法来判断何时攻击玩家或者何时发现玩家。一般的ARPG也许对此要求不高,只要玩家进入敌人的一定范围内(一个以敌人为中心的碰撞框)就开始攻击玩家。潜入类游戏还需要按照玩家发出的声音来搜索玩家。判断士兵是否听到声音需要符合两个条件,一个是有发声源,一个是发生源到士兵的距离在士兵的听觉范围内。
2015-12-15 11:08:56
4789
1
转载 Unity3D中继承MonoBehaviour的类中会被引擎自动调用的方法
在Unity中有很多方法是会被引擎在特定的时候自动调用的. 在VS里写这些方法的时候看不到它们被调用的次数,其实是引擎通过反射的方法调用的。 很多方法被调用都是有条件的,如OnTriggerEnter()就需要gameObject上有collider并且勾选上is trigger。 Update(): 当MonoBehaviour启用时,其Update在每一帧被调用。LateUpdate(
2015-12-10 15:54:47
1491
原创 Unity3D的射线检测Physics.Raycast
Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo); Camera.main.ScreenPointToRay()
2015-12-10 12:28:06
1207
unity 特效资源包 All In 1 Vfx Toolkit 1.4 资源商店
2022-12-21
unity 资源包 精灵特效 shader :All In 1 Sprite Shader-3.43
2022-12-21
unity 资源包 Lowpoly Style Ultra Pack 1.21
2022-04-13
unity 资源/插件 Easy Mobile Pro-2.18.1
2022-04-13
Magica Cloth 1.9.5 布料模拟,动态骨骼
2021-09-07
macOS App Cleaner & Uninstaller 7.0.3
2020-09-28
Unity Mesh Baker 3.7.2
2019-03-28
unity shader forge 1.3.8 可用于2018版本U3D
2019-03-27
Unity Psoft Body Deformation v1.1 3d柔体插件
2018-11-08
Unity Obi Fluid 插件,模拟液体气体等流体的插件
2018-11-08
unity 动态骨骼脚本 可以模拟动态布料,衣服,尾巴,胸部等抖动效果
2018-11-06
Jello-Physics unity 模拟柔体 果冻效果插件
2018-11-06
2D Rope System v1.0 UNITY模拟绳子物理效果插件
2018-11-06
unity模拟流动的水的液体物理效果
2018-10-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人