请选择 进入手机版 | 继续访问电脑版

查看: 538|回复: 2

[求助] SetCustomParticleData无法写入数据

[复制链接]

2

主题

4

帖子

45

贡献

初级UU族—1级

Rank: 1

积分
45
发表于 2018-1-11 08:52:26 | 显示全部楼层 |阅读模式
https://docs.unity3d.com/2018.1/ ... omParticleData.html
提供了一个为每个粒子写入ID号范例,但该数据在写入后,在写入后立即读取(在同帧的update中)没有问题,但在同一帧其它函数如LateUpdate中,或者下一帧的update中读取时,该值customData.x又变成0了,说明 customData并没有写进去。不知什么原因?
附代码如下:
   void Update() {
        ps.GetCustomParticleData(customData, ParticleSystemCustomData.Custom1);
        for (int i = 0; i < customData.Count; i++)      
      {                      // set custom data to the next ID, if it is in the default 0 state           
         if (customData.x == 0.0f)         
         {            
               customData = new Vector4(++uniqueID, 0, 0, 0);           
          }        
        }
        ps.SetCustomParticleData(customData, ParticleSystemCustomData.Custom1);

       //读出写入的数据
       ps.GetCustomParticleData(customData, ParticleSystemCustomData.Custom1);
       for(int i=0;< customData.Count; i++)   print("i="+i+"     ID="+cutomData.x);  //可以正常显示写入的数据;
}



void LateUpdate()
{
       ps.GetCustomParticleData(customData, ParticleSystemCustomData.Custom1);
       for(int i=0;< customData.Count; i++)   print("i="+i+"     ID="+cutomData.x);  //显示写入的数据为0;

}

2

主题

4

帖子

45

贡献

初级UU族—1级

Rank: 1

积分
45
 楼主| 发表于 2018-1-11 13:37:25 | 显示全部楼层
论坛上有个老外也说遇到同样问题,解决方法:“I worked it out. The above is a simple test which actually works. In my dev code I was setting up the custom data in Awake not Start. I think the Particle system wasn't correctly initialed when I was trying to set properties on it.”
但好像不是他说的这个情况。
Can't get ParticleSystem GetCustomParticleData/SetCustomParticleData to work
https://forum.unity.com/threads/ ... ata-to-work.496320/

2

主题

4

帖子

45

贡献

初级UU族—1级

Rank: 1

积分
45
 楼主| 发表于 2018-1-11 15:34:41 | 显示全部楼层
找到原因了,在particleSystem的面板中不能勾选“Custom Data”
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表