void InstantiateEffect(AE_EffectAnimatorProperty effect, bool returnIfCreatedInstance = false) { if (effect.Prefab == null) { return; } // if (returnIfCreatedInstance && effect.CurrentInstance!= null && GameObject.Find(effect.CurrentInstance.name)) return; if (effect.BonePosition != null && effect.BoneRotation != null) { effect.CurrentInstance = Instantiate(effect.Prefab, effect.BonePosition.position, effect.BoneRotation.rotation); } else { effect.CurrentInstance = Instantiate(effect.Prefab); } effect.CurrentInstance.transform.SetParent(effectPool.transform); if (effect.TargetAnimation != null) { effect.CurrentInstance.GetComponent <Animator>().runtimeAnimatorController = effect.TargetAnimation; } if (Bow != null) { var setMeshToEffect = effect.CurrentInstance.GetComponent <AE_SetMeshToEffect>(); if (setMeshToEffect != null && setMeshToEffect.MeshType == AE_SetMeshToEffect.EffectMeshType.Bow) { setMeshToEffect.Mesh = Bow; } } if (Arrow != null) { var setMeshToEffect = effect.CurrentInstance.GetComponent <AE_SetMeshToEffect>(); if (setMeshToEffect != null && setMeshToEffect.MeshType == AE_SetMeshToEffect.EffectMeshType.Arrow) { setMeshToEffect.Mesh = Arrow; } } if (HUE > -0.9f) { UpdateColor(effect); } if (effect.DestroyTime > 0.001f) { Destroy(effect.CurrentInstance, effect.DestroyTime); } }
private void UpdateColor(AE_EffectAnimatorProperty effect) { var settingColor = effect.CurrentInstance.GetComponent <AE_EffectSettingColor>(); if (settingColor == null) { settingColor = effect.CurrentInstance.AddComponent <AE_EffectSettingColor>(); } var hsv = AE_ColorHelper.ColorToHSV(settingColor.Color); hsv.H = HUE; settingColor.Color = AE_ColorHelper.HSVToColor(hsv); }