精华内容
下载资源
问答
  • UI特效层级管理

    千次阅读 2016-05-12 10:23:53
    UI特效层级管理
    在UI界面使用一些特效例如宝箱打开的特效,但是2D特效直接在使用上就可以实现层级管理,但有些效果2D达不到的。
    
    之前项目中管理特效的方法是,把这个特效RenderQueue值改为3500,也不太懂为什么,问别的同事说是UIPanel管理有,在Debug状态下看到
    红框里是3000的值。这个方法实现了效果,缺点是有多个panel的时候数值需要改到5000,当然但出现多个界面同时存在的时候问题就更大了。数值不知道填什么。
    写了UiFxSort.cs
    1. using System;
    2. using UnityEngine;
    3. using System.Collections;
    4. public class UiFxSort : MonoBehaviour
    5. {
    6. internal UIPanel UiPanel;
    7. public UIWidget UiWidgetInfrontOfMe;
    8. public bool AddQueue = true;
    9. private Renderer[] _renderers;
    10. private void Awake()
    11. {
    12. _renderers = this.GetComponentsInChildren<Renderer>(true);
    13. }
    14. public void InitPanel(UIPanel p)
    15. {
    16. UiPanel = p;
    17. }
    18. private void Start()
    19. {
    20. UiPanel = NGUITools.FindInParents<UIPanel>(gameObject);
    21. UiPanel.AddUiSort(this);
    22. }
    23. public void UpdateSortUi()
    24. {
    25. if (UiWidgetInfrontOfMe != null && UiWidgetInfrontOfMe.drawCall != null)
    26. {
    27. int rq = UiWidgetInfrontOfMe.drawCall.renderQueue + 1;
    28. if (!AddQueue) rq -= 2;
    29. for (int i = 0; i < _renderers.Length; i++)
    30. {
    31. Renderer _renderer = _renderers[i];
    32. if(_renderer==null) return;
    33. if(_renderer.materials ==null) return;
    34. if(_renderer.materials.Length==0) return;
    35. foreach (Material mat in _renderer.materials)
    36. {
    37. if (mat.renderQueue != rq)
    38. {
    39. mat.renderQueue = rq;
    40. }
    41. }
    42. }
    43. }
    44. }
    45. private void OnDestory()
    46. {
    47. if (UiPanel != null) UiPanel.RemoveUiSort(this);
    48. }
    49. }
    同时修改了NGUI的UIPanel的LateUpdate方法,添加个新方法
    1. void LateUpdate ()
    2. {
    3. #if UNITY_EDITOR
    4. if (mUpdateFrame != Time.frameCount || !Application.isPlaying)
    5. #else
    6. if (mUpdateFrame != Time.frameCount)
    7. #endif
    8. {
    9. mUpdateFrame = Time.frameCount;
    10. // Update each panel in order
    11. for (int i = 0, imax = list.Count; i < imax; ++i)
    12. list[i].UpdateSelf();
    13. int rq = 3000;
    14. // Update all draw calls, making them draw in the right order
    15. for (int i = 0, imax = list.Count; i < imax; ++i)
    16. {
    17. UIPanel p = list[i];
    18. if (p.renderQueue == RenderQueue.Automatic)
    19. {
    20. p.startingRenderQueue = rq;
    21. p.UpdateDrawCalls();
    22. //rq += p.drawCalls.Count;
    23. //用于粒子混排
    24. rq += p.drawCalls.Count*2;
    25. }
    26. else if (p.renderQueue == RenderQueue.StartAt)
    27. {
    28. p.UpdateDrawCalls();
    29. if (p.drawCalls.Count != 0)
    30. {
    31. //rq = Mathf.Max(rq, p.startingRenderQueue + p.drawCalls.Count);
    32. //用于粒子混排
    33. rq = Mathf.Max(rq, p.startingRenderQueue + p.drawCalls.Count*2);
    34. }
    35. }
    36. else // Explicit
    37. {
    38. p.UpdateDrawCalls();
    39. if (p.drawCalls.Count != 0)
    40. {
    41. //rq = Mathf.Max(rq, p.startingRenderQueue + 1);
    42. //用于粒子混排
    43. rq = Mathf.Max(rq, p.startingRenderQueue + 2);
    44. }
    45. }
    46. p.UpdateUiSort();
    47. }
    48. }
    49. }
    50. //用于粒子混排
    51. List<UiFxSort> container = new List<UiFxSort>();
    52. public void AddUiSort(UiFxSort uiSort)
    53. {
    54. if (container.Contains(uiSort))
    55. {
    56. return;
    57. }
    58. container.Add(uiSort);
    59. }
    60. public void RemoveUiSort(UiFxSort uisSort)
    61. {
    62. container.Remove(uisSort);
    63. }
    64. public void UpdateUiSort()
    65. {
    66. for (int i = 0; i < container.Count; i++)
    67. {
    68. container[i].UpdateSortUi();
    69. }
    70. }
    在特效上挂上这个脚本,指点下在界面widget 之前就能解决问题了。
    注:局限性这个方法不能解决UIScrollView上特效穿投,特别在超出显示区域的问题。
    预告下期内容如何在UI3D特效动态加载。
    展开全文
  • Unity UI层级管理框架

    千次阅读 2017-10-31 12:01:17
    1.为什么要使用UI层级管理框架? 根据我个人写的UI层级总结出:在一般UI界面的 Canvas 下有多个Panel,每个Panel下又有很多个需要操作的控件(Image、Text、inputField、Button)等, 因此要去管理如此多的事件处理...

    1.为什么要使用UI层级管理框架?

    根据我个人写的UI层级总结出:在一般UI界面的 Canvas 下有多个Panel,每个Panel下又有很多个需要操作的控件(Image、Text、inputField、Button)等,

    因此要去管理如此多的事件处理非常繁琐,UI的层级结构刚好适合用一套框架来管理 :Canvas--->Panel--->(控件)

    例:



    第一步:给需要监听鼠标事件的控件添加监听脚本

    用一个脚本代替 控件在Inspector中留下的OnClick方法(例:Button的OnClick需要去在脚本中寻找相对应的方法,如果脚本多了,寻找方法困难,而且不利于扩展)

    因此我用了一个 OnTriggerEvent.cs 的脚本来执行相应的点击事件

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.EventSystems;
    
    public class OnTriggerEvent : EventTrigger {
        //通过委托事件让UIScene来分配事件
        public delegate void ClickListener();
        public event ClickListener onBeginDrag;
        public event ClickListener onDrag;
        public event ClickListener onEndDrag;
        public event ClickListener onPointerClick;
        public event ClickListener onPointerUp;
        ///UI的相关监听//鼠标进入
    
        public override void OnBeginDrag(PointerEventData eventdata)
        {
            if (onBeginDrag != null)
                onBeginDrag();
        }
        public override void OnDrag(PointerEventData eventdata)
        {
            if (onDrag != null)
                onDrag();
        }
    
        public override void OnEndDrag(PointerEventData eventdata)
        {
            if (onEndDrag != null)
                onEndDrag();
        }
        public override void OnPointerClick(PointerEventData eventdata)
        {
            if (onPointerClick != null)
                onPointerClick();
        }
    
        public override void OnPointerUp(PointerEventData eventdata)
        {
            if (onPointerUp != null)
                onPointerUp();
        }
    
    }
    

    第二步:给Panel添加脚本管理其下面需要监听的各个控件

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class UIscene : MonoBehaviour {
    
        /// <summary>
        /// 管理所有需要监听的子物体
        /// </summary>
        Dictionary<string,OnTriggerEvent> items=new Dictionary<string, OnTriggerEvent>();
    	// Use this for initialization
        public void Start () {
            Init();
    	}
    	
        /// <summary>
        /// 根据名字在字典当中获取子物体
        /// </summary>
        public OnTriggerEvent GetTrigger(string name)
        {
            if (items.ContainsKey(name))
                return items[name];
            return null;
        }
    
        public void Init()
        {
            //调用Find方法找到这个Panel下面带有OnTriggerEvent组件的所有子物体
            Find(transform);
        } 
    
        //递归查找子物体
        public void Find(Transform t)
        {
            OnTriggerEvent item = t.GetComponent<OnTriggerEvent>();
            if (item != null)
            {
                string name = item.gameObject.name;
                if (!items.ContainsKey(name))
                {
                    items.Add(name, item);
                }
            }
            for (int i = 0; i < t.childCount; i++)
            {
                Find(t.GetChild(i));
            }
        }
    }
    

    第三步:给Canvas添加管理各个Panel的脚本 UIManager.cs

    可以创建一个单例作为全局管理的类

    如:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class UIPanel<T> : MonoBehaviour  where T:Component{
    
        private static T target;
        public static T Intance
        {
            get{ 
                target = GameObject.FindObjectOfType(typeof(T)) as T;
                if (target == null)
                {
                    GameObject go = new GameObject();
                    target = go.AddComponent<T>();
                }
                return target;
            }
        }
    }

    UIManager继承这个单例,方便使用


    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    //因为有些Panel的名称复杂,所以通过静态类、字段存一些Panel的名称,方便我们索引
    public class  UISceneName
    {
        public const string Panel_login = "Panel_Login";
        public const string Panel_ChooseAndEnter = "Panel_ChooseAndEnter";
        public const string Panel_CreateCharacter = "Panel_CreateCharacter";
        public const string Panel_Main = "Panel_Main";
        public const string Panel_Hero="Panel_Hero";
    //    public const string Panel_Register="Panel_Register";
    //    public const string 
    }
    
    public class UIManager : UIPanel<UIManager> {
        //创建一个字典来保存所有 Panel
        Dictionary<string,UIscene> scenes = new Dictionary<string,UIscene>();
        public void Init()
        {
            UIscene[] items = GameObject.FindObjectsOfType<UIscene>();
            for (int i = 0; i < items.Length; i++)
            {
                UIscene go =items[i];
                if (!scenes.ContainsKey(go.name))
                {
                    scenes.Add(go.name, go);
                    go.gameObject.SetActive(false);
                }
            }
        }
        //获取UIscene
        public UIscene GetUIscene(string name)
        {
            if (scenes.ContainsKey(name))
            {
                return scenes[name];
            }
            return null;
        }
        //对UIScene组件的Panel是否激活
        public void IsActive(string name,bool isActive)
        {
            GameObject go = scenes[name].gameObject;
            if (go == null)
            {
                Debug.Log("你要查找的物体丢");
                return;
            }
            go.gameObject.SetActive(isActive);
        }
        //展现登录界面的UIScene
        public void ShowUI()
        {
            IsActive(UISceneName.Panel_login, true);
        }
    }
    

    第四步:前面三步都是管理思想,并提供了很多接口,

    初始化整个UI

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Init : MonoBehaviour {
    
    	// Use this for initialization
    	void Start () {
            UIManager.Intance.Init();
    
            UIManager.Intance.ShowUI();
    	}
    
    }
    

    第五步:外部的使用:通过继承UIScene的到整个Panel下面的所有需要监听的控件

    如:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class ToMain : UIscene {
        private OnTriggerEvent Button_ToMain;
    	// Use this for initialization
    	void Start () {
            base.Start();
            Button_ToMain = GetTrigger("Button_ToMain");
            //给返回按钮绑定事件
            Button_ToMain.onPointerClick += HeroToMain;
    
    	}
    	//返回到主界面
        private void HeroToMain()
        {
            //关闭英雄界面
            UIManager.Intance.IsActive(UISceneName.Panel_Hero, false);
            //打开主界面
            UIManager.Intance.IsActive(UISceneName.Panel_Main, true);
        }
    }
    




    展开全文
  • 层级管理层级管理器中包括当前打开场景中的所有节点,不管节点是否包括可见的图像。你可以在这里选择、创建和删除节点,也可以通过拖拽一个节点到另一个上面来建立节点父子关系。 点击来选中节点,被选中的节点...

    层级管理器

    层级管理器 中包括当前打开场景中的所有节点,不管节点是否包括可见的图像。你可以在这里选择、创建和删除节点,也可以通过拖拽一个节点到另一个上面来建立节点父子关系。

    点击来选中节点,被选中的节点会以蓝底色高亮显示。当前选中的节点会在 场景编辑器 中显示蓝色边框,并更新 属性检查器 中的内容。

    node tree panel

    • 左上角的  按钮是创建按钮,用来创建节点。
    •  搜索按钮用来过滤搜索的类型,分为 节点组件 和 引用 UUID 的节点 三种类型。
    • 上方的搜索栏可以根据搜索类型来搜索所需的节点或者组件等:
      • 当在搜索按钮中选择 节点 类型时,可在搜索栏中输入需要查找的节点名称搜索。
      • 当在搜索按钮中选择 组件 类型时,搜索栏中会出现 t: 的符号,在后面输入需要查找的组件名称即可(例如 t:cc.Camera)。
      • 当在搜索按钮中选择 引用 UUID 的节点 类型时,搜索栏中会出现 used: 的符号,在后面输入需要查找的 UUID,即可搜索出有使用到该 UUID 的节点。
    •  按钮可以切换 层级管理器 节点的展开/折叠状态。
    • 面板主体是节点列表,可以在这里用右键菜单或者拖拽操作对资源进行增删修改。
    • 节点前面的小三角  用来切换节点树的展开/折叠状态。当用户按住 Alt/Option 的同时点击该按钮,除了执行这个节点自身的展开/折叠操作之外,还会同时展开/折叠该节点下的所有子节点。

    创建节点

    在层级管理器中有两种方法可以创建节点:

    • 点击左上角的 + 按钮,或右键点击鼠标并进入右键菜单中的 创建节点 子菜单。在这个子菜单中,你可以选择不同的节点类型,包括精灵(Sprite)、文字(Label)、按钮(Button)等有不同功能和表现节点。
    • 从 资源管理器 中拖拽图片、字体或粒子等资源到层级管理器中。就能够用选中的资源创建出相应的图像渲染节点。

    删除节点

    选中节点后,通过右键菜单里 删除 选项,或按下 Delete(Windows)或 Cmd + Backspace 热键即可删除选中的节点。如果选中节点包括子节点,子节点也会被一起删除。

    建立和编辑节点层级关系

    将节点 A 拖拽到节点 B 上,就使节点 A 成为节点 B 的子节点。和 资源管理器 类似,层级管理器中也通过树状视图表示节点的层级关系。点击节点左边的三角图标,即可展开或收起子节点列表。

    更改节点的显示顺序

    除了将节点拖到另一个节点上,你还可以继续拖拽节点上下移动,来更改节点在列表中的排序。橙色的方框表示节点所属父节点的范围,绿色的线表示节点将会被插入的位置。

    move node

    节点在列表中的排序决定了节点在场景中的显示次序。在层级管理器中显示在下方的节点的渲染顺序是在上方节点的后面,即下方的节点是在上方节点之后绘制的,因而最下方的节点在 场景编辑器 中显示在了最前。

    其他操作

    右键点击节点弹出的菜单里还包括下列操作:

    • 拷贝/粘贴:将节点复制到剪贴板上,然后可以粘贴到另外的位置,或打开另一个场景来粘贴刚才拷贝的节点。
    • 复制节点:生成和选中节点完全相同的节点副本,生成节点和选中节点在同一层级中。
    • 重命名:将节点改名。
    • 显示节点 UUID 和路径:在复杂场景中,我们有时候需要获取节点的完整层级路径,以便在脚本运行时访问该节点。点击这个选项,就可以在 控制台 中看到当前选中节点的路径以及节点的 UUID。
    • 锁定节点:鼠标移到节点上,左侧会有一个锁定按钮,节点锁定后无法在 场景编辑器 内选中该节点。

    关注公众号:《码之有道》,一起聊游戏全栈开发!

    1、公众号回复:【教程】获取零基础游戏开发客户端+服务端全套教程。
    2、公众号回复:【实战】获取企业级实战项目。
    3、公众号回复:【资料】获取大学四年整理的所有自学资料

    展开全文
  • 17 CoCos Creator-Node Tree 层级管理

    千次阅读 2019-01-13 00:00:47
    1. Node Tree 层级管理层级管理器 中包括当前打开场景中的所有节点,不管节点是否包括可见的图像。你可以在这里选择、创建和删除节点,也可以通过拖拽一个节点到另一个上面来建立节点父子关系。 点...

    0. 原文

    https://docs.cocos.com/creator/manual/zh/getting-started/basics/editor-panels/node-tree.html

    1. Node Tree 层级管理器

    层级管理器 中包括当前打开场景中的所有节点,不管节点是否包括可见的图像。你可以在这里选择、创建和删除节点,也可以通过拖拽一个节点到另一个上面来建立节点父子关系。

    点击来选中节点,被选中的节点会以蓝底色高亮显示。当前选中的节点会在 场景编辑器 中显示蓝色边框,并更新 属性检查器 中的内容。

    创建节点.png

    2. 创建节点

    在层级管理器中有两种方法可以创建节点:

    • 点击左上角的 + 按钮,或右键点击鼠标并进入右键菜单中的 创建节点 子菜单。在这个子菜单中,你可以选择不同的节点类型,包括精灵(Sprite)、文字(Label)、按钮(Button)等有不同功能和表现节点。
      创建渲染节点.png

    创建UI节点.png

    • 从 资源管理器 中拖拽图片、字体或粒子等资源到层级管理器中。就能够用选中的资源创建出相应的图像渲染节点。

    3. 删除节点

    选中节点后,通过右键菜单里 删除 选项,或按下 Delete(Windows)或 Cmd + Backspace 热键即可删除选中的节点。如果选中节点包括子节点,子节点也会被一起删除。

    4. 建立和编辑节点层级关系

    将节点 A 拖拽到节点 B 上,就使节点 A 成为节点 B 的子节点。和 资源管理器 类似,层级管理器中也通过树状视图表示节点的层级关系。点击节点左边的三角图标,即可展开或收起子节点列表。

    5. 更改节点的显示顺序

    除了将节点拖到另一个节点上,你还可以继续拖拽节点上下移动,来更改节点在列表中的排序。橙色的方框表示节点所属父节点的范围,绿色的线表示节点将会被插入的位置。

    更改节点的显示顺序

    节点在列表中的排序决定了节点在场景中的显示次序。在层级管理器中显示在下方的节点的渲染顺序是在上方节点的后面,即下方的节点是在上方节点之后绘制的,因而最下方的节点在 场景编辑器 中显示在了最前。

    6. 其他操作

    右键点击节点弹出的菜单里还包括下列操作:

    • 拷贝/粘贴:将节点复制到剪贴板上,然后可以粘贴到另外的位置,或打开另一个场景来粘贴刚才拷贝的节点。
    • 复制节点:生成和选中节点完全相同的节点副本,生成节点和选中节点在同一层级中。
    • 重命名:将节点改名。
    • 显示节点 UUID 和路径:在复杂场景中,我们有时候需要获取节点的完整层级路径,以便在脚本运行时访问该节点。点击这个选项,就可以在 控制台 中看到当前选中节点的路径以及节点的 UUID。
    • 锁定节点:鼠标移到节点上,左侧会有一个锁定按钮,节点锁定后无法在 场景编辑器 内选中该节点。

    其他操作.png

    展开全文
  • 一套unity ugui 窗体弹出多层遮罩管理的代码,有弹出 关闭 等功能
  • UI初级--视图层级管理

    2014-04-26 11:06:42
    @UI视图的层级管理
  • QHierarchy 4.3是一款用于管理Unity3D游戏开发引擎中所有对象的插件,可以加快开发效率,仅供参考学习,商用请支持正版。
  • 游戏UI框架设计(三)---窗体的层级管理    UI框架中UI窗体的“层级管理”,最核心的问题是如何进行窗体的显示管理。窗体(预设)的显示我们前面定义了三种类型: 普通、隐藏其他、反向切换。代码如下: ...
  • Unity NGUI panel 实现层级管理 即点谁谁置顶
  • UI框架中UI窗体的“层级管理”,最核心的问题是如何进行窗体的显示管理。窗体(预设)的显示我们前面定义了三种类型: 普通、隐藏其他、反向切换。 “普通显示”模式允许多个窗体同时显示,这种类型应用最多。 ...
  • 窗体弹窗层级管理

    2018-04-04 18:28:54
    using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class UIWindowPop : MonoBehaviour ... private static UIWindowPop _instance;... public static UI...
  • 最顶级的用这个type parames.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
  • 这个脚本主要是保存 游戏中可能出现的界面层级 UI层 War层 Tip层 在游戏开始设计之初,考虑到的层级出现情况。 脚本名:LayerManager 这个脚本与UIManager结合使用 var dictionary = require(&amp;quot;...
  • Unity3D ugui和模型粒子的层级管理

    千次阅读 2016-03-19 16:06:55
    直接看代码简单明了:   public class UIDepth : MonoBehaviour { public int order;...不同的窗口不同的次序,这样可以正确的区分每个窗口的层级和里面包含的粒子与模型顺序。    
  • 解决:用panel去进行层级控制 设置层级 (页面少的话 直接用层级控制 也就是深度 但是要控制一个panel里面的游戏物体 多\的话 影响性能) 右上角 Layers >edit layers>sorting layers 创建 backGround ...
  • Framework定义了三种窗口类型,三种类型的定义在WindowManager类中。  第一种为应用窗口。所谓的应用窗口是指该窗口对应一个Activity,由于加载Activity是 由 AmS完成的,因此,对于应用程序来讲,要创建一个应用类...
  • using UnityEngine; using System.Collections; using System.Collections.Generic; using System;public class LayerMgr : MonoBehaviour { #region 初始化 private static LayerMgr mInstance;...
  • cocos 层级渲染与管理

    2019-11-01 09:37:13
    Node1有需求设置为了99999(原本为0),也就是显示为最高层,随后需求完成后设置为0,返还回去,发现效果没有变,最后发现cocos的层级管理有点东西,为避免后人采坑,作下文: cococ渲染是树状结构,同级的节点层级...
  • 层级

    千次阅读 2020-11-09 23:01:12
    当一个react项目组件层级越来越深,页面越来越多的时候,数据在各个组件层级和页面之间传递的需求就会比较多,很多变量也需要做成可全局管理的。在这个时候,redux和react-redux的使用就很有必要了。它们能帮助我们...
  • 详细描述多层级角色部门权限管理结构,对于理清权限管理思路非常有用,清晰了解权限设计多级,一级各层级关系和数据结构
  • 项目背景:为一些有层级关系的数据管理做一套后台管理系统,例如一个小区,里面是有许多楼,楼里有许多层,每一层有许多不同的房······,现在就是要实现对这些数据进行增删改查操作。 1.Tree(树形组件) ...
  • 市面上项目管理工具蛮多的,但大多仅支持单层多项目管理,而我们公司有多条产品线,如果没有层级组织用于分类,使用起来就非常麻烦。。。最近,我们试用了下Topo项目管理软件,它可以根据我们的组织架构进行层级搭建...
  • Android在Application层级维护和管理全局所有Activity的方法ActivityLifecycleCallbacks经常看到有些项目中经常性的把所有activity继承自一个base的Activity,然后在每一次启动新activity时候添加当前activity到一个...
  • php 递归无限极分类和层级展示...第一:权限管理层级展示 /** * 数组的合并,并加上html标识前缀 * @param array $data * @param int $pid * @param string $html * @param int $level * @return array ...
  • Unity NGUI和UGUI与模型、特效的层级关系

    万次阅读 多人点赞 2016-10-05 11:39:34
    8、UGUI与模型和粒子特效穿插层级管理写在前面这篇笔记是整理了之前做的记录,在做项目的过程中,遇到了各种各样的界面穿插问题,界面层级混乱,比如,手机卡了或点快了,就导致两个界面相互交叉。
  • Window层级

    2020-08-13 17:39:34
    应用 Window 层级范围是 1~99,子 Window 层级范围是 1000~1999,系统 Window 层级范围是 2000~2999,这些层级范围对应着 WindowManager.LayoutParams 的 type 参数,如果想要 Window 位于所有 Window 的最顶层,...
  • (1)管理幅度:一个特定的管理者可以有效管理的直接下属数 (2)管理幅度影响的因素: ------管理者的能力 ------下属的成熟度 ------下属工作的标准化程度 ------工作条件与工作环境 (2)组织层次...
  • UGUI中的层级处理选项

    2019-09-25 20:07:21
      有段时间没弄了,居然有点忘了,这里记录一下。Depth --> Order In Layer(Canvas物体上,如需要可在UI上加Canvas...这三个参数都可以改变物体的先后渲染关系,但是一般不要用太多,父物体设置一个做层级管理...
  • 主数据管理 之产品层级

    千次阅读 热门讨论 2008-03-11 16:59:00
    MDM, SAP MDM, Consultant,Product hierarchy, material Group,主数据管理

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 113,187
精华内容 45,274
关键字:

层级管理