wangguan
2020-11-14 7f71e2c1cfb5a5bd329c87249c4da4f7f8cde330
调整UI到BottomCanvas下,但是MainUI还需要保留,用来显示受击伤害文字
7 files added
7 files modified
7280 ■■■■■ changed files
Assets/00000/package/Prefab/Prefab/Effect_UI_DianJi.prefab 2 ●●● patch | view | raw | blame | history
Assets/Materials/UI/tileTowerVSMat.mat 2 ●●● patch | view | raw | blame | history
Assets/Prefabs/UI/Endless.meta 8 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/UI/Endless/BottomCanvas.prefab 6797 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/UI/Endless/BottomCanvas.prefab.meta 7 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/UI/Endless/UIRoot.prefab 336 ●●●●● patch | view | raw | blame | history
Assets/Prefabs/UI/Endless/UIRoot.prefab.meta 7 ●●●●● patch | view | raw | blame | history
Assets/Resources/UI/BuffPreview/BuffPreview.prefab 16 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EndlessBuffPreview.cs 1 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EndlessSwitchSpeed.cs 1 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs 8 ●●●●● patch | view | raw | blame | history
Assets/Scripts/UI/ClickEffect.cs 59 ●●●● patch | view | raw | blame | history
Assets/Scripts/UI/RecycleEffectc.cs 25 ●●●●● patch | view | raw | blame | history
Assets/Scripts/UI/RecycleEffectc.cs.meta 11 ●●●●● patch | view | raw | blame | history
Assets/00000/package/Prefab/Prefab/Effect_UI_DianJi.prefab
@@ -14544,7 +14544,7 @@
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
  m_IsActive: 0
--- !u!224 &7712702100536741377
RectTransform:
  m_ObjectHideFlags: 0
Assets/Materials/UI/tileTowerVSMat.mat
@@ -40,7 +40,7 @@
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MainTex:
        m_Texture: {fileID: 2800000, guid: 93f40a01d57fbff418fc0b54b6ab7d9f, type: 3}
        m_Texture: {fileID: 2800000, guid: 8c9a3d26120e78f40aa4ef9ed23d573c, type: 3}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MetallicGlossMap:
Assets/Prefabs/UI/Endless.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b324bf83f1aa828459929f6b87728339
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Prefabs/UI/Endless/BottomCanvas.prefab
New file
Diff too large
Assets/Prefabs/UI/Endless/BottomCanvas.prefab.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 29da21b318f42054db30c52123aa4dbf
PrefabImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Prefabs/UI/Endless/UIRoot.prefab
New file
@@ -0,0 +1,336 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &6535914958007205483
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6695998526507377778}
  - component: {fileID: 6535914958007205482}
  m_Layer: 5
  m_Name: UICamera
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!4 &6695998526507377778
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6535914958007205483}
  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 6535914958486806658}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!20 &6535914958007205482
Camera:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6535914958007205483}
  m_Enabled: 1
  serializedVersion: 2
  m_ClearFlags: 3
  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
  m_projectionMatrixMode: 1
  m_GateFitMode: 2
  m_FOVAxisMode: 0
  m_SensorSize: {x: 36, y: 24}
  m_LensShift: {x: 0, y: 0}
  m_FocalLength: 50
  m_NormalizedViewPortRect:
    serializedVersion: 2
    x: 0
    y: 0
    width: 1
    height: 1
  near clip plane: 0.3
  far clip plane: 1000
  field of view: 60
  orthographic: 1
  orthographic size: 5
  m_Depth: 0
  m_CullingMask:
    serializedVersion: 2
    m_Bits: 32
  m_RenderingPath: -1
  m_TargetTexture: {fileID: 0}
  m_TargetDisplay: 0
  m_TargetEye: 3
  m_HDR: 1
  m_AllowMSAA: 1
  m_AllowDynamicResolution: 0
  m_ForceIntoRT: 0
  m_OcclusionCulling: 1
  m_StereoConvergence: 10
  m_StereoSeparation: 0.022
--- !u!1 &6535914958416122476
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6535914958416122479}
  - component: {fileID: 6535914958416122472}
  - component: {fileID: 6535914958416122473}
  - component: {fileID: 6535914958416122478}
  m_Layer: 5
  m_Name: Canvas
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &6535914958416122479
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6535914958416122476}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 0, y: 0, z: 0}
  m_Children:
  - {fileID: 6535914958696289720}
  - {fileID: 6535914959878075256}
  m_Father: {fileID: 6535914958486806658}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 0, y: 0}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 0, y: 0}
  m_Pivot: {x: 0, y: 0}
--- !u!223 &6535914958416122472
Canvas:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6535914958416122476}
  m_Enabled: 1
  serializedVersion: 3
  m_RenderMode: 1
  m_Camera: {fileID: 6535914958007205482}
  m_PlaneDistance: 100
  m_PixelPerfect: 0
  m_ReceivesEvents: 1
  m_OverrideSorting: 0
  m_OverridePixelPerfect: 0
  m_SortingBucketNormalizedSize: 0
  m_AdditionalShaderChannelsFlag: 0
  m_SortingLayerID: 0
  m_SortingOrder: 0
  m_TargetDisplay: 0
--- !u!114 &6535914958416122473
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6535914958416122476}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_UiScaleMode: 1
  m_ReferencePixelsPerUnit: 100
  m_ScaleFactor: 1
  m_ReferenceResolution: {x: 1080, y: 1920}
  m_ScreenMatchMode: 0
  m_MatchWidthOrHeight: 0
  m_PhysicalUnit: 3
  m_FallbackScreenDPI: 96
  m_DefaultSpriteDPI: 96
  m_DynamicPixelsPerUnit: 1
--- !u!114 &6535914958416122478
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6535914958416122476}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_IgnoreReversedGraphics: 1
  m_BlockingObjects: 0
  m_BlockingMask:
    serializedVersion: 2
    m_Bits: 4294967295
--- !u!1 &6535914958486806659
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6535914958486806658}
  m_Layer: 0
  m_Name: UIRoot
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!4 &6535914958486806658
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6535914958486806659}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 6695998526507377778}
  - {fileID: 6535914958416122479}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &6535914958696289721
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6535914958696289720}
  - component: {fileID: 6535914958696289722}
  - component: {fileID: 6535914958696289723}
  m_Layer: 5
  m_Name: Background
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &6535914958696289720
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6535914958696289721}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 6535914958416122479}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 1, y: 1}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 0, y: 0}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6535914958696289722
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6535914958696289721}
  m_CullTransparentMesh: 0
--- !u!114 &6535914958696289723
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6535914958696289721}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 0.13207549, g: 0.13207549, b: 0.13207549, a: 0.6509804}
  m_RaycastTarget: 0
  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
  m_Maskable: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
  m_Sprite: {fileID: 0}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!1 &6535914959878075257
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 6535914959878075256}
  - component: {fileID: 8301218794819429322}
  m_Layer: 5
  m_Name: FXContainer
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &6535914959878075256
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6535914959878075257}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 6535914958416122479}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
  m_AnchorMin: {x: 0, y: 0}
  m_AnchorMax: {x: 1, y: 1}
  m_AnchoredPosition: {x: 0, y: 0}
  m_SizeDelta: {x: 0, y: 0}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &8301218794819429322
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6535914959878075257}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 948601b33b1387445a200a55c5ab57c2, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  fxSample: {fileID: 7492650848780861268, guid: 8a7acee6919d96e4a8f182ee8b6804ce,
    type: 3}
  fxLifeTime: 1
  fxContainer: {fileID: 6535914959878075256}
  fxRenderCamera: {fileID: 6535914958007205482}
Assets/Prefabs/UI/Endless/UIRoot.prefab.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9c3affe892161784eb6122b8fc3db29a
PrefabImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Resources/UI/BuffPreview/BuffPreview.prefab
@@ -614,7 +614,7 @@
    m_SelectOnDown: {fileID: 0}
    m_SelectOnLeft: {fileID: 0}
    m_SelectOnRight: {fileID: 0}
  m_Transition: 1
  m_Transition: 0
  m_Colors:
    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
@@ -638,19 +638,7 @@
  m_TargetGraphic: {fileID: 162820265451914913}
  m_OnClick:
    m_PersistentCalls:
      m_Calls:
      - m_Target: {fileID: 162820265451914915}
        m_TargetAssemblyTypeName: KTGMGemClient.EndlessBuffPreview, Assembly-CSharp
        m_MethodName: OnClick
        m_Mode: 1
        m_Arguments:
          m_ObjectArgument: {fileID: 0}
          m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
          m_IntArgument: 0
          m_FloatArgument: 0
          m_StringArgument:
          m_BoolArgument: 0
        m_CallState: 2
      m_Calls: []
--- !u!114 &162820265451914915
MonoBehaviour:
  m_ObjectHideFlags: 0
Assets/Scripts/TowerDefense/UI/EndlessBuffPreview.cs
@@ -30,6 +30,7 @@
        // Start is called before the first frame update
        private void Start()
        {
            GetComponent<Button>().onClick.AddListener(OnClick);
            EventCenter.Ins.Add((int)KTGMGemClient.EventType.EndlessBuffRefresh, Refresh);
            ShowPanel();
        }
Assets/Scripts/TowerDefense/UI/EndlessSwitchSpeed.cs
@@ -25,6 +25,7 @@
        private void Start()
        {
            Icon.sprite = SpriteList[Speed - 1];
            GetComponent<Button>().onClick.AddListener(OnClick);
        }
        public void OnClick()
Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs
@@ -19,7 +19,7 @@
    public TextMeshProUGUI timeTextNew = null;
    public TextMeshProUGUI timeStatic = null;
    //public TextMeshProUGUI timeStatic = null;
    /// <summary>
    /// 结算界面
@@ -49,7 +49,7 @@
    public bool beginSkillStep = false;
    private GameObject darkGroundImg;
    public GameObject darkGroundImg;
    // Start is called before the first frame update
    void Start()
@@ -58,13 +58,11 @@
        bGameStart = false;
        bFirstLoaded = false;
        darkGroundImg = transform.Find("Image_DarkGround").gameObject;
        //darkGroundImg = transform.Find("Image_DarkGround").gameObject;
        darkGroundImg.SetActive(false);
        bVibrate = new bool[4];
        bVibrate[0] = bVibrate[1] = bVibrate[2] = bVibrate[3] = false;
        if (timeStatic)
            timeStatic.gameObject.SetActive(false);
        EndlessBuffSelect.instance.HideBuffUI();
        EndlessSettlement settlement = SettlementUI.transform.Find("BgMask").GetComponent<EndlessSettlement>();
        settlement.Init();
Assets/Scripts/UI/ClickEffect.cs
@@ -22,10 +22,9 @@
    /// <summary>
    /// 屏幕特效渲染使用的相机
    /// </summary>
    public Camera fxRenderCamera;
    private Camera fxRenderCamera;
    private Queue<GameObject> pool = new Queue<GameObject>(20);
    private List<GameObject> activatedFXList = new List<GameObject>();
    private Queue<RecycleEffectc> pool = new Queue<RecycleEffectc>(20);
    private void Awake()
    {
@@ -38,21 +37,12 @@
        {
            fxSample.SetActive(false);
        }
        fxRenderCamera = GameObject.Find("UICamera").GetComponent<Camera>();
    }
    private void Update()
    {
        for (int i = activatedFXList.Count - 1; i >= 0; --i)
        {
            GameObject fx = activatedFXList[i];
            float fxTime = float.Parse(fx.name);
            if (Time.time - fxTime > fxLifeTime)
            {
                RecycleFX(fx);
                activatedFXList.RemoveAt(i);
            }
        }
        if (Application.isMobilePlatform)
        {
            for (int i = 0; i < Input.touchCount; ++i)
@@ -76,57 +66,38 @@
    private void PlayFX(Vector2 tapPos)
    {
        GameObject fx = CreateFX();
        fx.name = Time.time.ToString();
        activatedFXList.Add(fx);
        RecycleEffectc fx = CreateFX();
        RectTransform fxRectTrans = fx.GetComponent<RectTransform>();
        RectTransform fxRectTrans = fx.gameObject.GetComponent<RectTransform>();
        Vector2 fxLocalPos;
        RectTransformUtility.ScreenPointToLocalPointInRectangle(fxContainer, tapPos, fxRenderCamera, out fxLocalPos);
        fxRectTrans.SetParent(fxContainer);
        fxRectTrans.anchoredPosition3D = fxLocalPos;
        fx.SetActive(true);
        //fxRectTrans.localScale = Vector3.one;
        fx.gameObject.SetActive(true);
        fx.StartPlay(fxLifeTime,RecycleFX);
    }
    private GameObject CreateFX()
    private RecycleEffectc CreateFX()
    {
        GameObject newFX = null;
        RecycleEffectc newFX = null;
        if (pool.Count > 0)
        {
            newFX = pool.Dequeue();
        }
        else
        {
            newFX = Instantiate(fxSample);
            GameObject go = Instantiate(fxSample);
            newFX = go.AddComponent<RecycleEffectc>();
        }
        return newFX;
    }
    private void RecycleFX(GameObject fx)
    private void RecycleFX(RecycleEffectc fx)
    {
        fx.SetActive(false);
        fx.gameObject.SetActive(false);
        pool.Enqueue(fx);
    }
    //简单,无法显示在最上层
    // Vector3 point;
    // GameObject effectGo;
    // void Start()
    // {
    //     effectGo = Resources.Load<GameObject>("Prefabs/EffectClick");
    // }
    // void Update()
    // {
    //     if (Input.GetMouseButtonDown(0))
    //     {
    //         point = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 4f);//获得鼠标点击点
    //         point = Camera.main.ScreenToWorldPoint(point);//从屏幕空间转换到世界空间
    //         GameObject go = Instantiate(effectGo);//生成特效
    //         go.transform.position = point;
    //         Destroy(go, 0.5f);
    //     }
    // }
}
Assets/Scripts/UI/RecycleEffectc.cs
New file
@@ -0,0 +1,25 @@
using System;
using System.Collections;
using UnityEngine;
/// <summary>
/// 回收粒子特效
/// </summary>
public class RecycleEffectc : MonoBehaviour
{
    public delegate void RecycleAC(RecycleEffectc fx);
    public RecycleAC myAC;
    public void StartPlay(float fxLifeTime, RecycleAC ac)
    {
        myAC = ac;
        StartCoroutine(Recycle(fxLifeTime));
    }
    IEnumerator Recycle(float fxLifeTime)
    {
        yield return new WaitForSeconds(fxLifeTime);
        if(myAC!=null){
            myAC(this);
        }
    }
}
Assets/Scripts/UI/RecycleEffectc.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 72a05c031d408794093fadde69126a27
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant: