UGUI动态改变Grid大小
2016-03-16 01:19
489 查看
工作中经常需要用到Grid,动态添加物体时,就需要动态改变Grid大小。直接写好脚本,以后COPY。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
public class Colve_UpdateGridShow : MonoBehaviour {
public GridLayoutGroup m_Grid;
private Vector2 cellVec2;
private Vector2 spacSize;
private RectOffset padding;
private GridType m_GridType;
private Vector2 m_SizeDelta;
private RectTransform m_Transform;
private void GetMessage()
{
m_Grid = GetComponent<GridLayoutGroup> ();
m_Transform = GetComponent<RectTransform> ();
cellVec2 = m_Grid.cellSize;
m_SizeDelta = m_Transform.sizeDelta;
spacSize = m_Grid.spacing;
padding = m_Grid.padding;
ChangeType ();
}
private void ChangeType()
{
switch (m_Grid.startAxis)
{
case GridLayoutGroup.Axis.Horizontal:
m_GridType = GridType.Horizontal;
break;
case GridLayoutGroup.Axis.Vertical:
m_GridType = GridType.Vertical;
break;
default:
break;
}
}
/// <summary>
/// 动态改变Grid大小
/// </summary>
[ContextMenu("UpdateShow")]
public void Update_Show()
{
GetMessage ();
switch (m_GridType)
{
case GridType.Horizontal:
ChangeSize_Horizontal();
break;
case GridType.Vertical:
ChangeSize_Vertical();
break;
default:
break;
}
}
private void ChangeSize_Horizontal()
{
int columnCount = Mathf.FloorToInt((m_SizeDelta.x - cellVec2.x - padding.left - padding.right) / (cellVec2.x + spacSize.x)) + 1;
int rowCount = Mathf.CeilToInt((float)transform.childCount / columnCount);
m_Transform.sizeDelta = new Vector2 (m_Transform.sizeDelta.x, (rowCount * cellVec2.y) + ((rowCount - 1) * spacSize.y) + padding.top + padding.bottom);
}
private void ChangeSize_Vertical()
{
int columnCount = Mathf.FloorToInt((m_SizeDelta.y - cellVec2.y - padding.top - padding.bottom) / (cellVec2.y + spacSize.y)) + 1;
int rowCount = Mathf.CeilToInt((float)transform.childCount / columnCount);
m_Transform.sizeDelta = new Vector2 ((rowCount * cellVec2.x) + ((rowCount - 1) * spacSize.x) + padding.left + padding.right,m_Transform.sizeDelta.y);
}
}
public enum GridType
{
Horizontal,
Vertical
}
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
public class Colve_UpdateGridShow : MonoBehaviour {
public GridLayoutGroup m_Grid;
private Vector2 cellVec2;
private Vector2 spacSize;
private RectOffset padding;
private GridType m_GridType;
private Vector2 m_SizeDelta;
private RectTransform m_Transform;
private void GetMessage()
{
m_Grid = GetComponent<GridLayoutGroup> ();
m_Transform = GetComponent<RectTransform> ();
cellVec2 = m_Grid.cellSize;
m_SizeDelta = m_Transform.sizeDelta;
spacSize = m_Grid.spacing;
padding = m_Grid.padding;
ChangeType ();
}
private void ChangeType()
{
switch (m_Grid.startAxis)
{
case GridLayoutGroup.Axis.Horizontal:
m_GridType = GridType.Horizontal;
break;
case GridLayoutGroup.Axis.Vertical:
m_GridType = GridType.Vertical;
break;
default:
break;
}
}
/// <summary>
/// 动态改变Grid大小
/// </summary>
[ContextMenu("UpdateShow")]
public void Update_Show()
{
GetMessage ();
switch (m_GridType)
{
case GridType.Horizontal:
ChangeSize_Horizontal();
break;
case GridType.Vertical:
ChangeSize_Vertical();
break;
default:
break;
}
}
private void ChangeSize_Horizontal()
{
int columnCount = Mathf.FloorToInt((m_SizeDelta.x - cellVec2.x - padding.left - padding.right) / (cellVec2.x + spacSize.x)) + 1;
int rowCount = Mathf.CeilToInt((float)transform.childCount / columnCount);
m_Transform.sizeDelta = new Vector2 (m_Transform.sizeDelta.x, (rowCount * cellVec2.y) + ((rowCount - 1) * spacSize.y) + padding.top + padding.bottom);
}
private void ChangeSize_Vertical()
{
int columnCount = Mathf.FloorToInt((m_SizeDelta.y - cellVec2.y - padding.top - padding.bottom) / (cellVec2.y + spacSize.y)) + 1;
int rowCount = Mathf.CeilToInt((float)transform.childCount / columnCount);
m_Transform.sizeDelta = new Vector2 ((rowCount * cellVec2.x) + ((rowCount - 1) * spacSize.x) + padding.left + padding.right,m_Transform.sizeDelta.y);
}
}
public enum GridType
{
Horizontal,
Vertical
}
相关文章推荐
- UVA 11538Chess Queen
- 深度学习方法(七):最新SqueezeNet 模型详解,CNN模型参数降低50倍,压缩461倍!
- 深度学习方法(七):最新SqueezeNet 模型详解,CNN模型参数降低50倍,压缩461倍!
- 深度学习方法(七):最新SqueezeNet 模型详解,CNN模型参数降低50倍,压缩461倍!
- iOS开发笔记12:iOS7上UITextField限制字数输入导致崩溃问题
- Leetcode Longest Consecutive Sequence
- UIWindow的研究
- UIGraphicsBeginImageContext
- UITableView性能优化
- caffe代码阅读3:data_reader、internalthread以及blocking_queue的实现细节-2016.3.15
- iOS-UIDynamic物理仿真-推力-UIPushBehavior
- com/opensymphonyork2/inject/ContainerBuilder.java:132:-1
- js选择checkbox值,组织成key-value形式,传值到后台
- UEFI固件下安装了windows7 ,安装Ubuntu双系统
- 深入分析Android (build/core/*.mk脚本)
- UIImage渲染模式显示图片本身颜色
- 29.UITableViewDataSource详解
- iOS-UIDynamic物理仿真-附着-UIAttachmentBehavior
- VK Cup 2016 - Qualification Round 1——A. Voting for Photos(queue+map)
- QtQuick基础教程(五)---QML语法