How to create a ParticleSystem whose particles orbit it independently?

Sure such a system can be created by having a empty GameObject, which has multiple GameObjects attached to it, each having its own ParticleSystem while also rotating their parent GameObjects. But having such a system with a 100 GameObjects as children has a noticeable impact on performance.

And I am starting to think the Shuriken particle system would be unable to do this.

This is old, but for guys who came along to find an anwer. I wrote a small script you just need to attach to the Particle System and than all Particles orbit around its center or to a position given by a transform in the inspector. Keep in mind that the ParticleSimulationSpace has a huge inpact of the Behavior.

using UnityEngine;
using System.Collections;

public class ParticlesOrbit : MonoBehaviour {

    ParticleSystem m_System;
    ParticleSystem.Particle[] m_Particles;

    [Header("Keep in mind that this script works only in Playmode")]
    [Tooltip("Make sure to set Particle Simulation Space to world. Otherwise it uses only the center of the Particle System to Orbit.")]
    Transform CenterOfGravity;

    public float strength = 1.0f;

    void Start()
        if (CenterOfGravity == null)
            CenterOfGravity = transform;

        if (m_System.simulationSpace == ParticleSystemSimulationSpace.Local && CenterOfGravity != null)
            Debug.LogWarning("You can only use the Center of gravity variable if the ParticleSystemSimulationSpace is set to World. Now its using the center of the ParticleSystem.", this);

    private void LateUpdate()

        // GetParticles is allocation free because we reuse the m_Particles buffer between updates
        int numParticlesAlive = m_System.GetParticles(m_Particles);

        // Change only the particles that are alive
        for (int i = 0; i < numParticlesAlive; i++)
            Vector3 gravitation = new Vector3(0, 0, 0);
            if (m_System.simulationSpace == ParticleSystemSimulationSpace.World)
                gravitation = CenterOfGravity.position - m_Particles*.position;*

gravitation = - m_Particles*.position;

Vector3 normalizedGravitation = Vector3.Normalize(gravitation);
m_Particles_.velocity += normalizedGravitation * strength;

// Apply the particle changes to the particle system
m_System.SetParticles(m_Particles, numParticlesAlive);

void InitializeIfNeeded()
if (m_System == null)
m_System = GetComponent();

if (m_Particles == null || m_Particles.Length < m_System.maxParticles)
m_Particles = new ParticleSystem.Particle[m_System.maxParticles];