Unity3d 如何在代码中更改统一粒子系统纹理动画精灵?

Unity3d 如何在代码中更改统一粒子系统纹理动画精灵?,unity3d,particle-system,Unity3d,Particle System,我正在使用统一精灵组件和各种发射器模块构建一个成形粒子系统(星系),其中精灵是静态的,永远持续(100000秒) 我按程序添加粒子,用位置、方向和颜色等发射粒子。我想从一组精灵中选择要绘制的精灵 我在Inspector中为TextureSheetAnimationModule指定了几个精灵,我可以在编辑器中设置它们以更改绘制的内容。我可以使用galaxy_textureAnim.startFrame来更改代码中用于粒子的精灵,以指定帧数,但这会影响所有精灵,并且不会随着添加的每个精灵而更改 在这

我正在使用统一精灵组件和各种发射器模块构建一个成形粒子系统(星系),其中精灵是静态的,永远持续(100000秒)

我按程序添加粒子,用位置、方向和颜色等发射粒子。我想从一组精灵中选择要绘制的精灵

我在Inspector中为TextureSheetAnimationModule指定了几个精灵,我可以在编辑器中设置它们以更改绘制的内容。我可以使用galaxy_textureAnim.startFrame来更改代码中用于粒子的精灵,以指定帧数,但这会影响所有精灵,并且不会随着添加的每个精灵而更改

在这里,我尝试添加十个螺旋精灵,随机纹理从两个选项中选择:

    for(int n = 0; n < 10; n++){
        particleRadialDistance = n*0.1f;
        particleRadialPosition = n*0.1f;
        placement.y = Mathf.Lerp(0.35f, 0.5f, particleRadialDistance);
        placement.x = particleRadialPosition*Mathf.PI*2;
        galaxy_params.position = class_utilities.PositionFromPolar(placement);
        galaxy_params.rotation = 180+Mathf.Lerp(0,-360,particleRadialPosition);
        galaxy_params.startSize = Mathf.Lerp(1f, 2f, particleRadialDistance);
        galaxy_textureAnim.startFrame = Random.Range(0,2);
        particles_galaxy.Emit(galaxy_params, 1);
    }
for(int n=0;n<10;n++){
粒子距离=n*0.1f;
粒子位置=n*0.1f;
placement.y=Mathf.Lerp(0.35f,0.5f,粒子距离);
placement.x=粒子位置*Mathf.PI*2;
galaxy_params.position=类别_实用程序。PositionFromPolar(位置);
星系旋转参数=180+Mathf.Lerp(0,-360,粒子位置);
星系参数startSize=Mathf.Lerp(1f,2f,粒子距离);
galaxy_textureAnim.startFrame=随机范围(0,2);
粒子发射(星系参数,1);
}
如何更改每个精灵的边框/精灵编号?

尝试以下操作:

galaxy_textureAnim.startFrame = new ParticleSystem.MinMaxCurve(0, 2);

谢谢这允许随机选择,但我可以将其更改为每个精灵选择一帧吗?我尝试过如果(particleRadialPosition<0.5f){galaxy_textureAnim.startFrame=new ParticleSystem.MinMaxCurve(0,0);}或者{galaxy_textureAnim.startFrame=new ParticleSystem.MinMaxCurve(1,1);}具有单个常量或线性范围的MinMaxCurve,但动画帧应用于所有精灵。我需要能够指定哪个粒子的哪个动画帧。
galaxy_textureAnim.startFrame = new ParticleSystem.MinMaxCurve(0, 2);