Unity GUI의 레이블 레이아웃
UGUI에는 표준 레이블이 없습니다.
나는 번거로움을 두려워하는 사람이다. 아무리 간단하게 준비한 물건이라도 시간을 단축하기 위해 기본적으로 자산상점에서 산다.하지만 팔지 않는 물건은 살 수 없다.
태그 레이아웃의 자산을 처리할 수 있는 UGUI가 없다는 생각이 듭니다.마지못해 써 내려갔다.
각본
적절히 보존하다.
GUITabLayout.csusing UnityEngine;
using UnityEngine.UI;
using System;
using System.Collections.Generic;
[AddComponentMenu("UI/Advanced/Tab Controller")]
public class GUITabController : MonoBehaviour {
[SerializableAttribute]
public struct TabContentsPair {
public Button tab;
public CanvasRenderer contentBody;
public Optionals optionals;
public void SetTabInteractable(bool b) {
tab.interactable = b;
if (optionals.selectedTab != null) {
optionals.selectedTab.gameObject.SetActive(!b);
tab.gameObject.SetActive(b);
}
}
}
[SerializableAttribute]
public struct Optionals {
public CanvasRenderer selectedTab;
}
public List<TabContentsPair> tabContentsPairs;
// Use this for initialization
void Start() {
if (tabContentsPairs != null) {
tabContentsPairs.ForEach(pair => {
// initialize tab state
pair.SetTabInteractable(!pair.contentBody.gameObject.activeSelf);
// add click listener
pair.tab.onClick.AddListener(() => {
// switch active contents
tabContentsPairs.ForEach(p => p.contentBody.gameObject.SetActive(false));
pair.contentBody.gameObject.SetActive(true);
// switch interactable
tabContentsPairs.ForEach(p => p.SetTabInteractable(true));
pair.SetTabInteractable(false);
});
});
}
}
}
사용법
기본적으로 이런 느낌의 구성일 때.
Tabs에 어셈블리로 첨부
이렇게 설정해서 사용하세요.
또한 Optionaals는 임의입니다.(null)이 없으면 안 되고 주의해야 할 느낌.
Toggle 버전 using UnityEngine;
using UnityEngine.UI;
using System;
using System.Collections.Generic;
[AddComponentMenu("UI/Advanced/Tab Controller")]
public class GUITabController : MonoBehaviour
{
[SerializableAttribute]
public struct TabContentsPair
{
public Toggle tab;
public CanvasRenderer contentBody;
public Optionals optionals;
public void SetTabInteractable(bool b)
{
tab.interactable = b;
if (optionals.selectedTab != null)
{
optionals.selectedTab.gameObject.SetActive(!b);
tab.gameObject.SetActive(b);
}
}
}
[SerializableAttribute]
public struct Optionals
{
public CanvasRenderer selectedTab;
}
public List<TabContentsPair> tabContentsPairs;
// Use this for initialization
void Start()
{
if (tabContentsPairs != null)
{
tabContentsPairs.ForEach(pair => {
// initialize tab state
pair.SetTabInteractable(!pair.contentBody.gameObject.activeSelf);
// add click listener
pair.tab.onValueChanged.AddListener((value) => {
// switch active contents
tabContentsPairs.ForEach(p => p.contentBody.gameObject.SetActive(false));
pair.contentBody.gameObject.SetActive(true);
// switch interactable
tabContentsPairs.ForEach(p => p.SetTabInteractable(true));
pair.SetTabInteractable(false);
});
});
}
}
}
Reference
이 문제에 관하여(Unity GUI의 레이블 레이아웃), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/GeneralD/items/91055c502668304a3b4b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
적절히 보존하다.
GUITabLayout.cs
using UnityEngine;
using UnityEngine.UI;
using System;
using System.Collections.Generic;
[AddComponentMenu("UI/Advanced/Tab Controller")]
public class GUITabController : MonoBehaviour {
[SerializableAttribute]
public struct TabContentsPair {
public Button tab;
public CanvasRenderer contentBody;
public Optionals optionals;
public void SetTabInteractable(bool b) {
tab.interactable = b;
if (optionals.selectedTab != null) {
optionals.selectedTab.gameObject.SetActive(!b);
tab.gameObject.SetActive(b);
}
}
}
[SerializableAttribute]
public struct Optionals {
public CanvasRenderer selectedTab;
}
public List<TabContentsPair> tabContentsPairs;
// Use this for initialization
void Start() {
if (tabContentsPairs != null) {
tabContentsPairs.ForEach(pair => {
// initialize tab state
pair.SetTabInteractable(!pair.contentBody.gameObject.activeSelf);
// add click listener
pair.tab.onClick.AddListener(() => {
// switch active contents
tabContentsPairs.ForEach(p => p.contentBody.gameObject.SetActive(false));
pair.contentBody.gameObject.SetActive(true);
// switch interactable
tabContentsPairs.ForEach(p => p.SetTabInteractable(true));
pair.SetTabInteractable(false);
});
});
}
}
}
사용법
기본적으로 이런 느낌의 구성일 때.
Tabs에 어셈블리로 첨부
이렇게 설정해서 사용하세요.
또한 Optionaals는 임의입니다.(null)이 없으면 안 되고 주의해야 할 느낌.
Toggle 버전 using UnityEngine;
using UnityEngine.UI;
using System;
using System.Collections.Generic;
[AddComponentMenu("UI/Advanced/Tab Controller")]
public class GUITabController : MonoBehaviour
{
[SerializableAttribute]
public struct TabContentsPair
{
public Toggle tab;
public CanvasRenderer contentBody;
public Optionals optionals;
public void SetTabInteractable(bool b)
{
tab.interactable = b;
if (optionals.selectedTab != null)
{
optionals.selectedTab.gameObject.SetActive(!b);
tab.gameObject.SetActive(b);
}
}
}
[SerializableAttribute]
public struct Optionals
{
public CanvasRenderer selectedTab;
}
public List<TabContentsPair> tabContentsPairs;
// Use this for initialization
void Start()
{
if (tabContentsPairs != null)
{
tabContentsPairs.ForEach(pair => {
// initialize tab state
pair.SetTabInteractable(!pair.contentBody.gameObject.activeSelf);
// add click listener
pair.tab.onValueChanged.AddListener((value) => {
// switch active contents
tabContentsPairs.ForEach(p => p.contentBody.gameObject.SetActive(false));
pair.contentBody.gameObject.SetActive(true);
// switch interactable
tabContentsPairs.ForEach(p => p.SetTabInteractable(true));
pair.SetTabInteractable(false);
});
});
}
}
}
Reference
이 문제에 관하여(Unity GUI의 레이블 레이아웃), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/GeneralD/items/91055c502668304a3b4b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
using UnityEngine;
using UnityEngine.UI;
using System;
using System.Collections.Generic;
[AddComponentMenu("UI/Advanced/Tab Controller")]
public class GUITabController : MonoBehaviour
{
[SerializableAttribute]
public struct TabContentsPair
{
public Toggle tab;
public CanvasRenderer contentBody;
public Optionals optionals;
public void SetTabInteractable(bool b)
{
tab.interactable = b;
if (optionals.selectedTab != null)
{
optionals.selectedTab.gameObject.SetActive(!b);
tab.gameObject.SetActive(b);
}
}
}
[SerializableAttribute]
public struct Optionals
{
public CanvasRenderer selectedTab;
}
public List<TabContentsPair> tabContentsPairs;
// Use this for initialization
void Start()
{
if (tabContentsPairs != null)
{
tabContentsPairs.ForEach(pair => {
// initialize tab state
pair.SetTabInteractable(!pair.contentBody.gameObject.activeSelf);
// add click listener
pair.tab.onValueChanged.AddListener((value) => {
// switch active contents
tabContentsPairs.ForEach(p => p.contentBody.gameObject.SetActive(false));
pair.contentBody.gameObject.SetActive(true);
// switch interactable
tabContentsPairs.ForEach(p => p.SetTabInteractable(true));
pair.SetTabInteractable(false);
});
});
}
}
}
Reference
이 문제에 관하여(Unity GUI의 레이블 레이아웃), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/GeneralD/items/91055c502668304a3b4b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)