关闭

Unity 编辑器下控制粒子播放跟随位移

标签: unity
4580人阅读 评论(0) 收藏 举报
分类:
        在之前的文章《Unity 编辑器下控制播放粒子》讲到在Unity编辑器的Scene视图进行控制播放粒子ParticleSystem,但是当这个粒子是挂载在人物身体部位的时候,会有可能出现不跟随位移的情况。查找原因,发现是 Resimulate 被勾选中了,这个选项是指当粒子参数改变时,立即更新粒子效果。要让粒子也能跟随移动,必须将这个选项取消掉。

可以简单的在编辑器下,取消掉这个选项,如下:


但是,对于其他人员可能不知道这个原因,手动设置不够智能,需要进一步在代码中主动控制。操纵这个选项,需要取得编辑器类,通过反射来得到,如下:
 C# Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
using System.Reflection;
using UnityEditor;

public static class EditorParticleSystemHelper
{
    private static Type realType;
    private static PropertyInfo property_editorResimulation;

    public static void InitType()
    {
        if (realType == null)
        {
            var assembly = Assembly.GetAssembly(typeof(Editor));
            realType = assembly.GetType("UnityEditor.ParticleSystemEditorUtils");

            property_editorResimulation = realType.GetProperty("editorResimulation", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public);
        }
    }

    /// <summary>
    /// 必须禁止粒子的Resimulation,这样才能让粒子跟随位移
    /// </summary>
    public static bool editorResimulation
    {
        set
        {
            InitType();
            property_editorResimulation.SetValue(null, value, null);
        }
    }
}

那么只要在代码中合适的地方,使用如下即可:
 C# Code 
1
EditorParticleSystemHelper.editorResimulation = false;
0
0
查看评论

模拟粒子系统(ParticleSystem.Simulate)

using UnityEngine; using UnityEditor; [ExecuteInEditMode] public class MyWindow : EditorWindow { private GameObject _curEffect; private float...
  • aa20274270
  • aa20274270
  • 2016-06-19 18:54
  • 1998

unity 粒子系统 跟随gameobject旋转

Renderer 项里选择 Strect
  • abcdtty
  • abcdtty
  • 2014-07-23 16:17
  • 2761

Unity - 粒子系统跟随路径移动

对于最新版的粒子系统Particle System,要让其跟随路径移动,无非就是借用其自身的API直接为每个粒子设置速度。看一下最终的效果图:编辑器为了能在场景中更方便的编辑路径,我们要将路径点的编辑功能加入到Inspector界面,但同时我们并不想破坏ParticleSystem自身的Inspec...
  • qq992817263
  • qq992817263
  • 2017-08-24 14:16
  • 991

Unity UGUI 拖拽跟随实现

IBeginDragHandler,IEndDragHandler,IDragHandler,IDropHandler 首先要实现这个四个接口。 其中OnDrag接口是用来处理图标跟随光标(手指在屏幕的位置)的 UGUI实现拖拽比NGUI简单太多,再也不用各种InverseTransf...
  • WangHaoDiablo
  • WangHaoDiablo
  • 2017-06-21 15:04
  • 643

Unity 编辑器下控制播放粒子

在Unity编辑器的Scene视图进行控制播放粒子ParticleSystem,可以借助方法Simulate,具体可以参照以下例子: 创建一个空对象ParticleAll,在这个对象下添加一个粒子(要添加多个粒子的话,添加到这个粒子之下),此时选中粒子,可以看到Scene视图预...
  • akof1314
  • akof1314
  • 2015-04-24 20:09
  • 10248

Unity3D粒子系统——实现粒子播放完成之后自动销毁

在带有粒子系统的根对象中加入组件ParticleAutoDestruction.cs即可,其中ParticleAutoDestruction组件代码如下: using UnityEngine; using System.Collections; public class ParticleAutoD...
  • Winner_2012
  • Winner_2012
  • 2014-12-10 17:31
  • 5714

动态改变粒子系统的速度[Unity]

本文讲述了如何在运行的时候动态修改粒子系统的粒子速度。
  • cubesky
  • cubesky
  • 2014-11-03 10:14
  • 3411

Unity3D-代码控制粒子移动或者按照预定的路径移动(ParticleSystem)

今天在做项目中,发现很多时候我们需要做一个金币移动效果。 比如,点击某个按钮之后,按钮附近出现各种零散的金币,然后他们都会向着显示金币的框框飞。 一般如果按钮都是固定的话,那么可以直接使用一个例子系统,然后调整好方向和速度,就可以达到要求!但是呢,有时候我们需要在很多地方都会使用这个效果。 一开始,...
  • pz789as
  • pz789as
  • 2017-01-16 14:33
  • 4133

关于Unity ParticleSystem的一些"冷"知识

目前的游戏开发中,粒子系统的使用想必是标配了,Unity自然也提供了相应的解决方案:ParticleSystem,网上对ParticleSystem的介绍也非常之多(譬如这里,这里,这里还有这里),虽然相关的资料教程不少,但多是一些如何使用之类的常规信息,对于一些虽然有些“生冷”,但仍然可能遇到的粒...
  • tkokof1
  • tkokof1
  • 2017-01-04 21:46
  • 4164

unity particleSystem bug研究

今天处理主角技能特效遇到2个问题,和大家分享。 1.是trailRender的拖拽问题,主角技能都是放在特效池里边的,当带有trailRender的特效重复使用的时候,第二次用的拖尾可能会出现在之前射出去的位置拖到主角位置,然后再拖出去。解决方法是每次技能释放了 拖尾结束的时候把trailrende...
  • gy373499700
  • gy373499700
  • 2015-03-19 19:52
  • 2502
    个人资料
    • 访问:3553188次
    • 积分:36065
    • 等级:
    • 排名:第137名
    • 原创:402篇
    • 转载:88篇
    • 译文:5篇
    • 评论:3425条
    个人说明
    联系方式:
    文章存档
    最新评论