码迷,mamicode.com
首页 > 编程语言 > 详细

(二十九)unity4.6学习Ugui中文文档-------运行时创建Scroll-lists

时间:2015-05-11 10:58:02      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:c#   unity   layout   extension   

??


孙广东 2015.5.10

技术分享

     首先要滚动和list形式存储内容。  使用Scroll Rect组件。就可以滚动了,但是有时候我们不希望,item超过区域还显示:就要使用Mask组件,说明一下,Mask组件组好配合Image一起使用。

 

下面的图:显示了的情况【头像是子对象Image】。1、父对象只有Mask组件;2、有MaskImage组件【图片为none】;3、有MaskImage组件【图片有Alpha透明区域】

技术分享  技术分享 技术分享

list容器中的item 我们怎么管理呢?VerticalLayout Group组件来实现自动的布局【其中可以设置每个item间的间距等】。还没完呢,每个item都要添加:Layout Element组件【可以设置每个item的最想要的宽度和高度等设置。】

 

还没完,我们要做的是在运行会list容器中动态的添加内容,所以我们希望的是:每次添加从尾部添加,如果item很少的,也要上对其【list容器设置为技术分享】。

这样我们就在为list容器添加ContextSizeFitter 组件,有什么用?

 

从下面的对应关系应该就明白了!

技术分享  技术分享

 

强调一下:  使用ALTShift 键是不同的呦!    这个选择很重要,会节省很多人为的设置!

技术分享 

涉及到的代码:

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;
using System.Collections.Generic;

[System.Serializable]
public class Item {
	public string name;
	public Sprite icon;
	public string type;
	public string rarity;
	public bool isChampion;
	public Button.ButtonClickedEvent thingToDo;
}

public class CreateScrollList : MonoBehaviour {
	
	public GameObject sampleButton;
	public List<Item> itemList;
	
	public Transform contentPanel;
	
	void Start () {
		PopulateList ();
	}
	
	void PopulateList () {
		foreach (var item in itemList) {
			GameObject newButton = Instantiate (sampleButton) as GameObject;
			SampleButton button = newButton.GetComponent <SampleButton> ();
			button.nameLabel.text = item.name;
			button.icon.sprite = item.icon;
			button.typeLabel.text = item.type;
			button.rarityLabel.text = item.rarity;
			button.championIcon.SetActive (item.isChampion);
			//          button.button.onClick = item.thingToDo;
			newButton.transform.SetParent (contentPanel);
		}
	}


	/// <summary>
	/// 这两个函数 通过Inspector面板 赋值给 thingToDo变量就OK
	/// </summary>
	public void SomethingToDo () {
		Debug.Log ("I done did something!");
	}
	
	public void SomethingElseToDo (GameObject item) {
		Debug.Log (item.name);
	}
}

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class SampleButton : MonoBehaviour {
	
	public Button button;
	public Text nameLabel;
	public Image icon;
	public Text typeLabel;
	public Text rarityLabel;
	public GameObject championIcon;
}

using UnityEngine;
using System.Collections;

public class StandaloneScriptExample : MonoBehaviour {
	// 这两个函数 通过Inspector面板 赋值给 thingToDo变量就OK
	public void DoANewThing () {
		Debug.Log ("Stand alone script example!");
	}
}



(二十九)unity4.6学习Ugui中文文档-------运行时创建Scroll-lists

标签:c#   unity   layout   extension   

原文地址:http://blog.csdn.net/u010019717/article/details/45619191

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!