• Stars
    star
    270
  • Rank 152,189 (Top 3 %)
  • Language
    C#
  • Created over 8 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Unity ParticleSystem Preview 粒子预览插件

Unity 粒子特效预览工具

原因

在使用 Unity 制作完成粒子特效预制后,保存到工程统一的特效目录里,待到需要使用的时候,再去选择相应的粒子特效预制。当特效预制越来越多后,就会越来越难以分辨哪个才是真正需要使用的,而 Unity 并没有提供像模型动作动画 AnimationClip 那样可以预览资源的功能,只能一个个拖动到场景里面去预览播放,非常的费时费劲。

目标

实现像模型动作动画那样可以直接在检视器里进行预览粒子。

解决

粒子特效预览最后要实现的效果跟模型动作动画预览类似,先将 FBX 模型换成粒子物体,然后再实现其在预览窗口里面可以进行播放。

首先实现预览窗口里面的三维空间,使用到的编辑器类 PreviewRenderUtility,它创建了一个隐藏的摄像机,cullingMask 设置为只要渲染的特定 Layer 层,渲染成目标纹理,然后绘制纹理到预览窗口里。接着,创建所要被渲染的物体。格子平面地板,指示方向箭头,还有粒子特效对象。

最后实现粒子的预览播放。粒子在编辑模式下的模拟播放有两种方式,一种直接调用 Simulate 方法,播放的效果跟实际运行播放的效果可能存在差别。另一种则是调用锁定粒子,再调用 Play 方法,效果会跟实际运行播放的效果一样,因为 Unity 内部会对锁定的粒子对象,进行真实计算。这里使用的是第二种方法,锁定粒子的方法并没有开放出来,所以得反射 ParticleSystemEditorUtils.lockedParticleSystem 方法。

对于粒子特效根节点就带有 Mesh 的话,就无法显示原本的 Mesh 预览窗口,所以在工具栏加个按钮,可以进行切换。

按钮 PS (Show particle system preview)可以在原先的预览窗口跟粒子特效预览窗口之间进行切换。

结语

Unity 编辑器提供了灵活的扩展方法,但是很多都是没有文档的,需要去研究它自身是如何使用的,才能方便移植扩展。粒子特效的模拟播放方式,在不选中粒子对象的情况下,又想让粒子可以播放,那么就只有锁定粒子这种方式。

源码

AssetStore 地址:https://www.assetstore.unity3d.com/cn/#!/content/73346

Github 地址:https://github.com/akof1314/UnityParticleSystemPreview

More Repositories

1

CoolFormat

CoolFormat Source Code Formatter
C++
539
star
2

Wiz.Editor.md

一个基于 Editor.md 构建的为知笔记 Markdown 插件
JavaScript
504
star
3

UnityAssetDanshari

Unity Asset Danshari 资源断舍离
C#
285
star
4

AssetBundleReporter

Unity AssetBundle Reporter
C#
150
star
5

AnimationPath

A Unity Animation Path Preview Unity 动画路径预览工具
C#
128
star
6

uGUI_LinkImageText

Unity uGUI Text support insert link and image
C#
111
star
7

UnityTMProFontCustomizedCreater

Unity TextMesh Pro 文本组件之字体图集生成工具
ShaderLab
71
star
8

Unity-TextMeshPro-DynamicText

Unity TextMeshPro DynamicText 动态文本组件
C#
51
star
9

Wiz.UEditor

一个基于 UEditor 构建的为知笔记编辑器插件
JavaScript
49
star
10

Unity-ConsoleTiny

⚡ Console Tiny is a powerful replacement for Unity's editor console.
C#
46
star
11

UnityEditorListView

UnityEditor ListView Control
C#
42
star
12

Sublime-CoolFormat

A Sublime Text plugin for Source Code Formatter
Python
33
star
13

uGUISpriteInAtlasShader

Unity uGUI sprite shader
GLSL
32
star
14

Unity-EditorInternalsVisibleDemo

Unity Editor Internals Visible
C#
31
star
15

UnityAnimationCurvePopupMenu

Unity AnimationCurvePopupMenu (Copy, Paste)
C#
31
star
16

ObjectPickerAdvanced

Unity ObjectPicker Advanced 对象选择器
C#
29
star
17

UnityNavToCollider

Unity NavMesh To Collider
C#
21
star
18

Cocos2dxGame

Cocos2d-x Game Tutorials
C++
21
star
19

Wiz.Title.Cleaner

一个支持正则的为知笔记文章标题清理插件
CSS
19
star
20

UnityVirtualFolder

Unity VirtualFolder
C#
12
star
21

WPS_COOL_CSV

一个能够保存Unicode编码CSV文件的WPS插件
C#
12
star
22

UnityEditorLearn

Unity Editor Learn
9
star
23

UnityTools

Some useful tools
C#
8
star
24

decrypter_xrd

C++
8
star
25

Unity-Live2D-uGUI

Unofficial
C#
8
star
26

Unity-EditorConnectionExample

EditorConnectionExample
C#
8
star
27

UnitySpritePackerOverview

Unity Sprite Packer Overview
C#
8
star
28

ConvertVcproj

ConvertVcproj
C++
4
star
29

Wiz.Auto.Editor

一个支持自动选择编辑器的为知笔记功能增强插件
JavaScript
4
star
30

UnityBuiltinStyleIcon

Unity builtin styles and icons viewer
C#
4
star
31

WuHuanTools

Some Tools
C++
3
star
32

VisualStudioFileOpenTool

Visual Studio File Open Tool
C#
2
star
33

Unity-UI-MeshEffect

Unity UI MeshEffect
C#
2
star
34

akof1314.github.io

个人网站
HTML
1
star
35

Unity-DocRedirect

Redirect the Unity document to offline documentation 文档重定向
C#
1
star