namespace Guru.UI
{
using System;
using UnityEngine;
using UnityEngine.UI;
public class UIRoot : ViewBase
{
const string PrefabPath = "guru/ui/root_canvas";
private static UIRoot _instance;
public static UIRoot Instance
{
get
{
if (_instance == null) _instance = LoadInstance();
return _instance;
}
}
///
/// CloneObject 对象
///
///
private static UIRoot LoadInstance()
{
var ui = CloneResources(PrefabPath);
ui.Init();
return ui;
}
public static T Clone(GameObject prefab, Transform container = null) where T :Component
{
var go = Instantiate(prefab, container);
if (go != null)
{
go.name = nameof(T).ToLower();
return go.GetComponent();
}
return null;
}
public static T CloneResources(string path, Transform container = null) where T : Component
{
var prefab = Resources.Load(path);
if( null != prefab) return Clone(prefab, container);
return null;
}
private Canvas _canvas;
private CanvasScaler _canvasScaler;
private Transform _rootNode;
private void Init()
{
DontDestroyOnLoad(gameObject);
gameObject.name = "guru_ui";
_rootNode = CreateEmptyNode("root");
_canvas = gameObject.GetComponent