You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
3.6 KiB
C#
154 lines
3.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using FairyGUI;
|
|
using Articy.Unity;
|
|
|
|
namespace Game
|
|
{
|
|
public interface IUIPageBase
|
|
{
|
|
void Update();
|
|
void FixedUpdate();
|
|
void Destroy();
|
|
void Create(EuiPage pageType);
|
|
void Open(params object[] values);
|
|
void Close();
|
|
bool IsActive();
|
|
bool IsFullPage();
|
|
List<EuiPage> GetSubPages();
|
|
void AddSubPage(EuiPage subPage);
|
|
void RemoveSubPage(EuiPage subPage);
|
|
void RemoveSubPageAll();
|
|
}
|
|
|
|
public class UIPageBase<T> : MetaDataHandler, IUIPageBase where T : GComponent, new()
|
|
{
|
|
protected T View;
|
|
private EuiPage _mPageType;
|
|
private bool _isFullScreenUI;
|
|
private readonly List<EuiPage> _subPageList;
|
|
|
|
protected UIPageBase()
|
|
{
|
|
_subPageList = new List<EuiPage>();
|
|
}
|
|
|
|
public virtual void Update()
|
|
{
|
|
}
|
|
|
|
public virtual void FixedUpdate()
|
|
{
|
|
}
|
|
|
|
public bool IsActive()
|
|
{
|
|
return View.visible;
|
|
}
|
|
|
|
public bool IsFullPage()
|
|
{
|
|
return _isFullScreenUI;
|
|
}
|
|
|
|
protected virtual void OnInput(PPlayerInput context)
|
|
{
|
|
}
|
|
|
|
protected virtual void OnDestroy()
|
|
{
|
|
}
|
|
|
|
protected virtual void OnCreate()
|
|
{
|
|
}
|
|
|
|
protected virtual void OnOpen()
|
|
{
|
|
}
|
|
|
|
protected virtual void OnOpen(params object[] values)
|
|
{
|
|
}
|
|
|
|
protected virtual void OnClose()
|
|
{
|
|
}
|
|
|
|
public void Create(EuiPage pageType)
|
|
{
|
|
_mPageType = pageType;
|
|
OnCreate();
|
|
}
|
|
|
|
public void Destroy()
|
|
{
|
|
OnDestroy();
|
|
}
|
|
|
|
public void Open(params object[] values)
|
|
{
|
|
View.visible = true;
|
|
EventManager.Instance.AddEvent<PPlayerInput>(EEvent.PlayerInput, OnInput);
|
|
if (values.Length > 0)
|
|
{
|
|
OnOpen(values);
|
|
}
|
|
else
|
|
{
|
|
OnOpen();
|
|
}
|
|
CreateBind();
|
|
}
|
|
|
|
public void Close()
|
|
{
|
|
View.visible = false;
|
|
EventManager.Instance.RemoveEvent<PPlayerInput>(EEvent.PlayerInput, OnInput);
|
|
ClearBind();
|
|
OnClose();
|
|
}
|
|
|
|
protected void CreateUI(bool isFull = false)
|
|
{
|
|
View = (T)typeof(T).GetMethod("CreateInstance")?.Invoke(null, null);
|
|
if (View == null) return;
|
|
View.sortingOrder = (int)_mPageType;
|
|
View.fairyBatching = true;
|
|
_isFullScreenUI = isFull;
|
|
GRoot.inst.AddChild(View);
|
|
}
|
|
|
|
public List<EuiPage> GetSubPages()
|
|
{
|
|
return _subPageList;
|
|
}
|
|
|
|
public void AddSubPage(EuiPage subPage)
|
|
{
|
|
_subPageList.Add(subPage);
|
|
}
|
|
|
|
public void RemoveSubPage(EuiPage subPage)
|
|
{
|
|
_subPageList.Remove(subPage);
|
|
}
|
|
|
|
public void RemoveSubPageAll()
|
|
{
|
|
_subPageList.Clear();
|
|
}
|
|
|
|
protected Vector3 GetScreenPos(Vector3 pos)
|
|
{
|
|
return CameraManager.Instance.GetScreenPos(pos);
|
|
}
|
|
|
|
protected NTexture Texture(ArticyObject icon)
|
|
{
|
|
var texture = Util.LoadDraft<Texture2D>(icon);
|
|
return new NTexture(texture);
|
|
}
|
|
}
|
|
} |