public override void OnInspectorGUI() { Obj = new SerializedObject(this.target); this.firetime = Obj.FindProperty("firetime"); this.duration = Obj.FindProperty("duration"); EditorGUILayout.PropertyField(firetime); EditorGUILayout.PropertyField(duration); ManualSkillParticleEmitterItem targetObj = this.target as ManualSkillParticleEmitterItem; // Obj.ApplyModifiedProperties(); if (GUILayout.Button("添加技能粒子")) { GameObject sub = new GameObject(); sub.name = "SubParticle"; sub.transform.SetParent(targetObj.transform); SkillParticleActionItem sg = sub.AddComponent <SkillParticleActionItem>(); sg.Duration = 1; sg.export = true; } }
private static Example.SkillParticleEmitter ExportParticleEmitter(SkillParticleEmitterItem emitter, List <Example.SkillParticleEmitter> emitters) { Example.SkillParticleEmitter particleEmitter = new Example.SkillParticleEmitter(); List <Example.SkillParticle> skillParticles = new List <Example.SkillParticle>(); var particles = emitter.GetComponentsInChildren <SkillParticleActionItem>(); foreach (var particle in particles) { ExportSkillParticle(particle, skillParticles); } if (emitter is AutoSkillParticleEmitterItem) { AutoSkillParticleEmitterItem autoEmitter = (AutoSkillParticleEmitterItem)emitter; particleEmitter.emitterType = autoEmitter.emitterType; particleEmitter.StartTime = Mathf.FloorToInt(autoEmitter.Firetime * 1000); particleEmitter.Duration = Mathf.FloorToInt(autoEmitter.Duration * 1000); particleEmitter.EmitterShape = ExportSkillShape(autoEmitter.emitterShape); particleEmitter.EmitterPosition = MathUtil.ToVector3f(autoEmitter.emitterOffset); particleEmitter.ParticleTemplate = skillParticles.Count > 0 ? skillParticles[0] : null; particleEmitter.Particles = skillParticles; } else if (emitter is ManualSkillParticleEmitterItem) { ManualSkillParticleEmitterItem autoEmitter = (ManualSkillParticleEmitterItem)emitter; particleEmitter.emitterType = autoEmitter.emitterType; particleEmitter.StartTime = Mathf.FloorToInt(autoEmitter.Firetime * 1000); particleEmitter.Duration = Mathf.FloorToInt(autoEmitter.Duration * 1000); particleEmitter.Particles = skillParticles; } emitters.Add(particleEmitter); return(particleEmitter); }