• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

游戏开发

Unity客户端架构-PanelManager

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2018/1203/218.html

Unity客户端架构-PanelManager

 

继续Unity客户端架构系列的介绍,上一篇中给大家介绍了Resource的使用,这一篇我们常州微信小程序开发网站开发-幻天网络就来看看PanelManager的使用。

using UnityEngine;

using System.Collections;

using System.Diagnostics;

using System;

public class PanelManager : MonoBehaviour

    private Transform parent;

    private string path;

    public Transform Parent

   

        get

       

            if (this.parent == null)

           

                GameObject gui = io.Gui;

                if (gui)

               

                    this.parent = gui.transform.Find("Camera");

               

           

            return this.parent;

       

   

    public void CreatePanel(DialogType type)

   

#if UNITY_EDITOR

        string typename = Util.ConvertPanelName(type);

        this.CreatePanel(typename);

#else 

        base.StartCoroutine(this.OnCreatePanel(type));

#endif

   

    private IEnumerator OnCreatePanel(DialogType type)

   

        path = Util.AppContentDataUri + "UI/" + type.ToString() + "Panel.unity3d";

        GameObject go = null;

        WWW bundle = new WWW(path);

        yield return bundle;

        try

       

            if (bundle.assetBundle.Contains(type.ToString() + "Panel"))

           

                go = Instantiate(bundle.assetBundle.Load(type.ToString() + "Panel" + typeof(GameObject))) as GameObject;

           

       

        catch (System.Exception e)

       

            NGUIDebug.Log("catch go..... " + e.ToString());

       

        go.name = type.ToString() + "Panel";

        go.transform.parent = UIContainer.instance.transform;

        go.transform.localPosition = Vector3.zero;

        go.transform.localScale = Vector3.one;

        bundle.assetBundle.Unload(false);

   

    public void CreatePanel(string name)

   

        if (this.Parent.FindChild(name) != null)

       

            return;

       

        GameObject gameObject = Util.LoadPrefab(Const.PanelPrefabDir + name + ".prefab");

        if (gameObject == null)

       

            return;

       

//         GameObject go = GameObject.Instantiate(gameObject) as GameObject;

//         go.transform.localPosition = Vector3.zero;

//         go.name = name;

        GameObject gameObject2 = Util.AddChild(gameObject, UIContainer.instance.transform);

        gameObject2.name = name;

        gameObject2.transform.localPosition = Vector3.zero;

        this.OnCreatePanel(name, gameObject2);

   

     private void OnCreatePanel(string name, GameObject go)

   

        switch (name)

       

            case "LoginPanel":

                this.OnLoginPanel(go);

                break;

            case "CharacterPanel":

                this.OnCharacterPanel(go);

                break;

            case "MainPanel":

                this.OnMainPanel(go);

                break;

            case "WorldPanel":

                this.OnWorldPanel(go);

                break;

            case "DuplicatePanel":

                this.OnDuplicatePanel(go);

                break;

       

   

    private void OnLoginPanel(GameObject go)

    

         go.transform.localPosition = new Vector3(0f, 0f, 0f);

         io.container.loginPanel = go;

    

    private void OnCharacterPanel(GameObject go)

   

        go.transform.localPosition = new Vector3(0f, 0f, 0f);

        io.container.characterPanel = go;

   

    private void OnMainPanel(GameObject go)

   

        go.transform.localPosition = new Vector3(0f, 0f, 0f);

        io.container.mainPanel = go;

   

    private void OnDuplicatePanel(GameObject go)

   

        go.transform.localPosition = new Vector3(0f, 0f, 0f);

        io.container.duplicatePanel = go;

   

    private void OnWorldPanel(GameObject go)

   

        go.transform.localPosition = new Vector3(0f, 0f, 0f);

        io.container.WorldPanel = go;

   



上篇:上一篇:Unity客户端架构-Resource
下篇:下一篇:LuaFramework-打包AssetBundle工具