Unity 组件的排序问题
来源:互联网 发布:业务下单网站源码 编辑:程序博客网 时间:2024/05/16 09:35
好久不写博客,今天来一篇。
记得NGUI里的UIGrid和UITable用起来很不错,但是不用插件时就要这两个脚本,由于NGUI的耦合型比较高,不怎么容易提取出这两个脚本。
所以就自己琢磨写了一个简单的。刚好应用了以下最近学的编辑器。
首先排序的核心就是计算transform的位置,另外要使它可以实时排序。
主要写了两个脚本:
首先是排序方法脚本GridTransform.cs
<pre name="code" class="csharp">using UnityEngine;using System.Collections;public class GridTransform : MonoBehaviour {//排序的列数public int column=1;//间距的宽和高public float space_w;public float space_h;//组件对象的宽和高public float width;public float Height;//排序对象的数目public int itemNumber;//字段封装实时排序public bool repositionNow{set{_repositionNow=value;if(value){Sort();_repositionNow=false;}}get{return _repositionNow;}}[HideInInspector]public bool _repositionNow;//排序方法void Sort(){itemNumber = transform.childCount;;for(int i=0;i<itemNumber;i++){transform.GetChild(i).localPosition=new Vector3((width+space_w)*((i)%(column)),-((i)/column)*(Height+space_h),0);}}}
然后是编辑器的封装:
using UnityEngine;using System.Collections;using UnityEditor;[CustomEditor(typeof(GridTransform))]public class GridEditor : Editor {public override void OnInspectorGUI (){base.OnInspectorGUI ();GridTransform g=target as GridTransform;g.repositionNow=EditorGUILayout.BeginToggleGroup("resert",g.repositionNow);EditorGUILayout.EndToggleGroup();}}
最终的属性面板如图所示:
每点击一次resert就排序一次,点击完自动为false
下面我们举个列子,在场景中建一个空物体和几个立方体子物体,空物体挂上Grid Transform脚本,如下图所示:
这样就可以排序了,组件可以是任意形式的对象,虽然Unity自带了GridLayoutGroup但是只适用于自带的ui层,自己写的组件或者三维层都不适用。
0 0
- Unity 组件的排序问题
- Unity的camera组件
- unity的LOD组件
- [Unity]Android Build Support 官方组件的下载安装问题
- unity anim 组件的使用
- Unity组件的基类单例模式
- unity network组件的使用
- Unity的 UNet组件介绍
- unity的canvas scaler组件
- unity 获取不到组件对象问题
- <Unity 3D工作笔记>关于不显示组件,无法保存到预设物的问题
- Unity 组件
- [Unity]Unity组件崩溃的通用的几种解决办法
- [Unity]Unity 安装的官方标准组件的说明
- unity 的游戏脚本组件的生命周期
- unity委托的排序方法
- Unity基于组件的对象模型
- Unity基于组件的对象模型
- [LeetCode] Min Stack
- XML----XPath SELECT
- DataSnap客户端数据集必需断开连接件才能关闭问题
- vs2010下编译live555官方源代码
- android res与assets资源的区别
- Unity 组件的排序问题
- Unity3D技术之利用角色控制器实现爬坡减速效果
- 小说之前夫驾到
- oakley sunglasses cheap 4iUfuck.google551spp
- 摄像机属性及妙用详解
- git 使用
- 解决Sublime突然无法自动补全问题
- Unity3D学习之C#的代理和事件
- Ed Hardy Damskie 4qQfuck.google680rgn