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

        在之前的文章《 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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值