前言
在Unity游戏开发中,使游戏中的特定物体或场景部分发出指定的光芒,能够增强视觉效果,提升整体的游戏体验。该方法参照了B站大佬的视频,本文只会简单的讲解制作过程,不会对shader进行更深入的探讨。(使用的Unity版本为2023.2.20)
想要更详细了解请移步
【Unity教程】使用ShaderGraph让贴图中指定部分发光, 做出炫酷的效果_哔哩哔哩_bilibili
图片
一、准备图片
首先要准备好完整的单张图片,里面包含了所有将会用到的动作(以下将其称为主图片)
将Texture Type改为Sprit(2D and UI) ,
Sprite Mode改为Multiple,
Pixel Per Unit根据自己需求更改,
Filter Mode 和一般改为Point(no filter)(一般对像素图片素材而言),
Compression改为High Quality。
二、修改图片
修改图片,绘制我们想要其指定发光的位置,使其具有相同大小,将发光位置变成白色,其余地方设置为黑色
这里我将攻击特效单独抠出来制作成白色黑底。
三、导入图片
将图片导入Unity中,进入主图片的编辑界面
选择Secondary Textures
在右下角的位置添加修改后的图片作为纹理,命名时在首位添加下划线"_"
项目的一些准备工作
一、安装包
打开注册表,确保安装了后处理,URP,ShaderGraph
二、设置URP
新建一个URP Asset
在项目设置里把新建的URP Asset拽入里面,只需要让Graphics里有URP Asset不需要对其进行更改
三、后处理
在主摄像机里选中后处理
四、Global Volume
在场景里新建Global Volume
五、Bloom
点击New,再点击添加组件搜索Bloom
选中Threahold和Intensity(Threshold改大和Intensity改小都会减少亮度)
六、Global Light 2D
加入全局灯光2D
Intensity值会改变场景的亮度,数值越大越亮
制作Shader Graph
一、新建Shader Graph
最后来制作攻击特效,在Asset里创建一个Sprite Lit Shader Graph
二、创建Material
点击刚刚创建的ShaderGraph右键创造一个Material
创建的材质会与ShaderGraph自动绑定,如果没有绑定,点击Shader搜索创建好的ShaderGraph进行绑定
三、编辑Shader
打开Shader编辑器
(1)添加参数
点击+添加以下几种参数
(2)设置纹理
MianImage为人物的主图片纹理,EffectImage和WeaponImage为攻击特效图纹理和武器特效图纹理,在Default中可以添加图片作为纹理
(3)编辑节点
在编辑器的空白处右键选择Create Node,再通过搜索新建节点,编辑好节点如下图
点击保存
为人物添加Shader
一、修改人物的Sprite Renderer
Sprite 添加的是主图片的素材,人物的动画也必须使用主图片里的素材,否则达不到想要的效果
Material选择我们创建好的那个
二、调节参数
在Inspector下面找到Material可以调节在ShaderGraph设置的参数,
EmissingColor是攻击特效的颜色,SwordColor是武器特效的颜色,EffectAmount可以调节发光亮度(从0到1亮度越来越小)
三、效果实现
现在效果就实现了
四、编写代码
下面写一段代码,通过代码调节Material里的参数,使图片有一个闪烁的效果,要注意参数名前面要加上下划线“_”
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
float timer;
bool isOpen;
private SpriteRenderer spriteRenderer;
void Start()
{
spriteRenderer = GetComponent<SpriteRenderer>();
}
void Update()
{
if(timer<=1)
{
timer +=Time.deltaTime;
}
if(timer>1)
{
timer = 0;//让时间归零
isOpen = !isOpen;//取反
}
if(isOpen)
{
spriteRenderer.material.SetFloat("_EffectAmount", timer);
}
else
spriteRenderer.material.SetFloat("_EffectAmount", 1-timer);
}
}
现在人物手中的剑就有了一个来回闪烁的效果
图片闪烁