1
0
Fork 0
LaboratoryProtection/Assets/PMaker/Scripts/Extension/GameObjectExtension.cs

90 lines
2.4 KiB
C#

using Cysharp.Threading.Tasks;
using DG.Tweening;
using UnityEngine;
namespace PMaker.Extension
{
public static class GameObjectExtension
{
/// <summary>
/// 显示游戏对象
/// </summary>
/// <param name="go"></param>
public static void Visible(this GameObject go)
{
//go.transform.localScale = Vector3.one;
go.SetActive(true);
}
/// <summary>
/// 隐藏游戏对象
/// </summary>
/// <param name="go"></param>
public static void InVisible(this GameObject go)
{
//go.transform.localScale = Vector3.zero;
go.SetActive(false);
}
/// <summary>
/// 设置游戏对象开闭
/// </summary>
/// <param name="go"></param>
/// <param name="value">显示或隐藏</param>
public static void SetVisible(this GameObject go, bool value)
{
if (value)
{
go.Visible();
}
else
{
go.InVisible();
}
}
/// <summary>
/// 检测游戏对象开闭
/// </summary>
/// <param name="go"></param>
/// <returns>true:显示, false:隐藏</returns>
public static bool IsVisible(this GameObject go)
{
return go.activeSelf;
}
public static async UniTask Visible(this GameObject go, float duration)
{
var canvasGroup = go.ForceGetComponent<CanvasGroup>();
canvasGroup.alpha = 0;
await canvasGroup.DOFade(1, duration);
}
public static async UniTask InVisible(this GameObject go, float duration)
{
var canvasGroup = go.ForceGetComponent<CanvasGroup>();
canvasGroup.alpha = 1;
await canvasGroup.DOFade(0, duration);
}
/// <summary>
/// 获取指定组件, 有则Get无则Add
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="go"></param>
/// <returns></returns>
public static T ForceGetComponent<T>(this GameObject go) where T : Component
{
var component = go.GetComponent<T>();
if (component == null)
{
component = go.AddComponent<T>();
}
return component;
}
}
}