Esempio n. 1
0
 public static void DestroyInstance()
 {
     if (!UnityUtility.IsNull(instance))
     {
         UnityUtility.SafeDelete(instance.gameObject);
     }
 }
Esempio n. 2
0
        public static T CreateInstance()
        {
            if (UnityUtility.IsNull(instance))
            {
                instance = UnityUtility.CreateGameObject <T>(null, typeof(T).Name);
            }

            return(instance);
        }
        /// <summary> 再生状態か取得. </summary>
        public static bool IsPlayback(this ParticleSystem particleSystem, bool subemitter = false)
        {
            // ※ ParticleSystem.IsAlive()は常にtrueを返すバグがあるので使わない.

            if (UnityUtility.IsNull(particleSystem))
            {
                return(false);
            }

            if (!UnityUtility.IsActiveInHierarchy(particleSystem))
            {
                return(false);
            }

            // ループエフェクトは常に生存.
            if (particleSystem.main.loop)
            {
                return(true);
            }

            // サブエミッターはtimeが更新されないので再生時間で判定しない.
            if (!subemitter)
            {
                // 再生時間より短いか.
                if (particleSystem.time < particleSystem.main.duration)
                {
                    return(true);
                }
            }

            // 1つでも生きてるParticleSystemがいたら生存中.
            if (0 < particleSystem.particleCount)
            {
                return(true);
            }

            return(false);
        }