public void CopyClassValues(BasePPFX sourceComp, BasePPFX targetComp) { FieldInfo[] sourceFields = sourceComp.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); int i = 0; for (i = 0; i < sourceFields.Length; i++) { var value = sourceFields[i].GetValue(sourceComp); sourceFields[i].SetValue(targetComp, value); } targetComp.material = Instantiate(sourceComp.material); }
public void PlayPostProcessEffect(GameObject prefab, Vector2 center, float angle) { if (!prefab) { return; } BasePPFX[] PPFX = prefab.GetComponents <BasePPFX>(); foreach (BasePPFX PPS in PPFX) { BasePPFX PPSCopy = (BasePPFX)mainCamera.AddComponent(PPS.GetType()); CopyClassValues(PPS, PPSCopy); PPSCopy.SetCenter(center); PPSCopy.SetAngle(angle); } }