SpriteStudioForUnity.SpriteStudioBaker.CreateEffect C# (CSharp) Method

CreateEffect() public method

public CreateEffect ( SpriteStudioEffect effect ) : void
effect SpriteStudioEffect
return void
        public void CreateEffect(SpriteStudioEffect effect)
        {
            GameObject effectObj = new GameObject (effect.name);

            List<SSEffectNode> nodeList = new List<SSEffectNode> ();
            foreach (SpriteStudioEffectEffectDataNode dataNode in effect.effectData.nodeList) {
                string name = dataNode.name;
                if (dataNode.parentIndex != -1) {
                    name += "[" + dataNode.type + "]";
                }
                GameObject nodeObj = new GameObject (name);
                SSEffectNode node = nodeObj.AddComponent<SSEffectNode> ();
                node.arrayIndex = dataNode.arrayIndex;

                if (dataNode.type == "Emmiter") {
                    SSEmitter emitter = nodeObj.AddComponent<SSEmitter> ();
                    ParticleSystem ps = emitter.GetComponent<ParticleSystem> ();
                    SerializedObject so = new SerializedObject(ps);
                    foreach (SpriteStudioEffectEffectDataNodeBehaviorValue value in dataNode.behavior.list) {
                        if (value.name == "Basic") {
            //							so.FindProperty("").floatValue = 0;
                        }
                    }
                    so.ApplyModifiedProperties();
                }

                SSEffectNode parentNode = nodeList.FirstOrDefault (v => v.arrayIndex == dataNode.parentIndex);
                if (parentNode != null) {
                    node.gameObject.transform.parent = parentNode.gameObject.transform;
                } else {
                    node.gameObject.transform.parent = effectObj.transform;
                }

                nodeList.Add (node);
            }

            string path = effectDirectory + "/" + effectObj.name + ".prefab";
            PrefabUtility.CreatePrefab (path, effectObj);
            UnityEngine.GameObject.DestroyImmediate (effectObj);
            AssetDatabase.SaveAssets ();
            AssetDatabase.Refresh ();
        }

Usage Example

        bool CreateEffects(SpriteStudioBaker baker)
        {
            if (baker.effectList == null)
                return true;

            string message = null;
            try
            {
                for (int i = 0; i < baker.effectList.Count; i++)
                {
                    SpriteStudioEffect effect = baker.effectList [i];
                    message = effect.name;
                    EditorUtility.DisplayProgressBar("Sprite Studio For Unity", "Create Effect(" + (i + 1) + "/" + baker.effectList.Count + ") : " + effect.name, 0.8f);
                    baker.CreateEffect(effect);
                }
            } catch (Exception e)
            {
                EditorUtility.DisplayDialog("Error", "Create Effect : " + message, "OK");
                Debug.Log(e.StackTrace);
                return false;
            }
            return true;
        }