Particle System Texture Sheet Animation - One of each Frame?

I don’t know if this is possible or not; I’ve been messing with the particle system properties for a while and can’t get it to perform how I’d like.

I have a texture sheet containing 3 rows of 4 sprites. The particle system is set to fire 1 burst of 4 sprites. I’d like the particle system to select a random row from the texture sheet and spawn exactly one of each sprite in that row for the burst emission. Sadly, the property for Start Frame only lets me pick a random sprite within constraints, so I can’t guarantee that the same sprite will be duplicated within a burst.

I’m not massively familiar with scripting particle systems, but if this is a viable solution I’ll gladly attempt to implement it.

You should rotate your sprite sheet texture by 90 degree, use 3 by 4 tile division and specify 1 row instead of random row. Finally duplicate this particle system 3 times with different sheet row. Unity should be able to batch the drawcalls of all 4 particle systems.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class nameYourScriptHere : MonoBehaviour {
	public ParticleSystem[] ps;
	float column;
	void OnEnable () {
		var tsam = ps[0].textureSheetAnimation;
		column = (float)(int)Random.Range(0, tsam.numTilesX - 1)/tsam.numTilesX;
		for (int i = 0; i < ps.Length; i++) {
			tsam = ps*.textureSheetAnimation;*
  •  	tsam.frameOverTimeMultiplier = column;*
    
  •  }*
    
  • }*
    }