public CreateEffect ( SpriteStudioEffect effect ) : void | ||
effect | SpriteStudioEffect | |
Результат | 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 ();
}
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; }