96 lines
2.4 KiB
C#
96 lines
2.4 KiB
C#
using System;
|
|
using System.Linq;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using XericLibrary.Runtime.MacroLibrary;
|
|
|
|
namespace Deconstruction.Runtime.UI
|
|
{
|
|
/// <summary>
|
|
/// 提供ui界面上的脚本
|
|
/// </summary>
|
|
public class WeaklyUIBehaviour : MonoBehaviour
|
|
{
|
|
#region 字段属性
|
|
|
|
/// <summary>
|
|
/// 此处的矩形变换组件
|
|
/// </summary>
|
|
public RectTransform rectTransform { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 此组件所在的Canvas
|
|
/// </summary>
|
|
public Canvas CanvasRoot { get; private set; }
|
|
|
|
/// <summary>
|
|
/// 此组件所在的Canvas下的CanvasScaler
|
|
/// </summary>
|
|
public CanvasScaler CanvasRootScaler { get; private set; }
|
|
|
|
private bool isFirstOnEnable = false;
|
|
private bool isFirstOnEnableStart = false;
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// 在加载脚本实例时调用
|
|
/// </summary>
|
|
protected virtual void Awake()
|
|
{
|
|
rectTransform = transform as RectTransform;
|
|
CanvasRoot = transform.GetParents()
|
|
.Select(t => t.GetComponent<Canvas>())
|
|
.FirstOrDefault(a => a != null);
|
|
if (CanvasRoot != null)
|
|
CanvasRootScaler = CanvasRoot.GetComponent<CanvasScaler>();
|
|
else
|
|
{
|
|
Debug.LogError($"成员{name}不是一个有效的ui成员,或没有放置在canvas上,致使其无法找到ui根组件");
|
|
}
|
|
|
|
isFirstOnEnable = true;
|
|
isFirstOnEnableStart = true;
|
|
}
|
|
|
|
protected virtual void OnEnable()
|
|
{
|
|
if (isFirstOnEnable)
|
|
{
|
|
isFirstOnEnable = false;
|
|
OnFirstEnable();
|
|
}
|
|
}
|
|
|
|
protected virtual void OnDisable()
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 首次行为激活时调用(用于界面类型元素在运行期间首次初始化)
|
|
/// </summary>
|
|
protected virtual void OnFirstEnable()
|
|
{
|
|
|
|
}
|
|
|
|
protected virtual void Start()
|
|
{
|
|
if (isFirstOnEnableStart)
|
|
{
|
|
isFirstOnEnableStart = false;
|
|
OnFirstEnableStart();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 首次行为激活开始时调用(用于界面类型元素在运行期间首次初始化)
|
|
/// </summary>
|
|
protected virtual void OnFirstEnableStart()
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|