UniRx를 사용하여 RPG 메뉴 화면 같은 것을 쉽게 만들 수 있습니다.
개시하다
이 글은Unity#2Advent Calendar 2017, 12월 14일 보도입니다.
오늘은 내 생일이다.축하
완성물
차리다
Unity에서 새 프로젝트를 만들고 AsseetStore에서 UniRx를 가져오십시오.
공짜니까 사양하지 마세요.
준비화면
이런 느낌의 화면을 만들다.
오른쪽 보기에는 항목 수량만 생성됩니다.
설정 버튼
제목 이외의 텍스트에 Buton 구성 요소 추가
프레임은 선택한 프레임, 하이라이트/누르는 경우에만 표시됩니다.
또 버튼 내비게이션은 이런 느낌으로 설정됐다.
화면 표시 유형을 나타내는 열거체를 준비하다
여기까지 하면 대본이야.
우선 제목에 따라 열거체를 준비한다.그나저나 유닛이 손발을 좀 쓰면 진전이 많을 거예요.
ViewType.csusing UniRx;
public enum ViewType{
Menu,
ViewA,
ViewB,
ViewC
}
[System.Serializable]
public class ViewTypeReactiveProperty : ReactiveProperty<ViewType>
{
public ViewTypeReactiveProperty ()
{
}
}
#if UNITY_EDITOR
[UnityEditor.CustomPropertyDrawer(typeof(ViewTypeReactiveProperty))]
public class ViewTypeReactivePropertyDrawer : InspectorDisplayDrawer
{}
#endif
다음은 상태 관리 & 메뉴 표시용 스크립트와 각 화면 제어용 스크립트를 준비합니다.
버튼 바인딩 같은 건 UniRx에서 만든 거예요.
MenuViewScript.csusing UnityEngine;
using UnityEngine.UI;
using UniRx;
using UnityEngine.EventSystems;
public class MenuViewScript : MonoBehaviour {
public ViewTypeReactiveProperty m_viewType;
[SerializeField]private Button m_btnA;
[SerializeField]private Button m_btnB;
[SerializeField]private Button m_btnC;
void Start()
{
m_viewType.Subscribe (type => {
if(type == ViewType.Menu)
{
EventSystem.current.SetSelectedGameObject(m_btnA.gameObject);
}
}).AddTo (this);
m_btnA.OnClickAsObservable ().Subscribe (_ => {
m_viewType.Value = ViewType.ViewA;
}).AddTo (this);
m_btnB.OnClickAsObservable ().Subscribe (_ => {
m_viewType.Value = ViewType.ViewB;
}).AddTo (this);
m_btnC.OnClickAsObservable ().Subscribe (_ => {
m_viewType.Value = ViewType.ViewC;
}).AddTo (this);
}
}
SubViewScript.csusing UnityEngine;
using UnityEngine.UI;
using UniRx;
using UnityEngine.EventSystems;
public class SubViewScript : MonoBehaviour {
[SerializeField]private ViewType m_targetType;
[SerializeField]private MenuViewScript m_mainScript;
[SerializeField]private Button m_backBtn;
void Start () {
m_mainScript.m_viewType.Subscribe (type => {
if(type == m_targetType)
{
this.gameObject.SetActive (true);
EventSystem.current.SetSelectedGameObject(m_backBtn.gameObject);
}else{
this.gameObject.SetActive (false);
}
}).AddTo (this);
m_backBtn.OnClickAsObservable ().Subscribe (_ => {
m_mainScript.m_viewType.Value = ViewType.Menu;
}).AddTo (this);
}
}
Inspector를 통해 설정
그나저나 아까 공예품 덕분에 여기 ViewType을 만지작거리며 메뉴를 변경할 수 있어요.
(ViewB/ViewC는 거의 같기 때문에 할애)
게임 실행
쿵!
이런 문법의 장점
ViewType에 항목을 추가하기만 하면 화면 수를 간단하게 늘릴 수 있습니다.
또 각 기능은 거의 독립돼 변경이 쉽다.
후기
시간이 없어서 약간 누락된 느낌이지만 ReactiveProperty만으로도 여러 가지를 사용할 수 있어요.
간단한 일을 많이 할 수 있다.
(참고로 이 샘플 프로젝트를 만드는 데 10분 정도 걸린다)
만져봐도 돼요.
내일 사쿠야.sunday의 "unity와 Arduino는 무엇을 합니까?"네.
Reference
이 문제에 관하여(UniRx를 사용하여 RPG 메뉴 화면 같은 것을 쉽게 만들 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ShiroKuro/items/984fefb7e109e99498a9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
차리다
Unity에서 새 프로젝트를 만들고 AsseetStore에서 UniRx를 가져오십시오.
공짜니까 사양하지 마세요.
준비화면
이런 느낌의 화면을 만들다.
오른쪽 보기에는 항목 수량만 생성됩니다.
설정 버튼
제목 이외의 텍스트에 Buton 구성 요소 추가
프레임은 선택한 프레임, 하이라이트/누르는 경우에만 표시됩니다.
또 버튼 내비게이션은 이런 느낌으로 설정됐다.
화면 표시 유형을 나타내는 열거체를 준비하다
여기까지 하면 대본이야.
우선 제목에 따라 열거체를 준비한다.그나저나 유닛이 손발을 좀 쓰면 진전이 많을 거예요.
ViewType.csusing UniRx;
public enum ViewType{
Menu,
ViewA,
ViewB,
ViewC
}
[System.Serializable]
public class ViewTypeReactiveProperty : ReactiveProperty<ViewType>
{
public ViewTypeReactiveProperty ()
{
}
}
#if UNITY_EDITOR
[UnityEditor.CustomPropertyDrawer(typeof(ViewTypeReactiveProperty))]
public class ViewTypeReactivePropertyDrawer : InspectorDisplayDrawer
{}
#endif
다음은 상태 관리 & 메뉴 표시용 스크립트와 각 화면 제어용 스크립트를 준비합니다.
버튼 바인딩 같은 건 UniRx에서 만든 거예요.
MenuViewScript.csusing UnityEngine;
using UnityEngine.UI;
using UniRx;
using UnityEngine.EventSystems;
public class MenuViewScript : MonoBehaviour {
public ViewTypeReactiveProperty m_viewType;
[SerializeField]private Button m_btnA;
[SerializeField]private Button m_btnB;
[SerializeField]private Button m_btnC;
void Start()
{
m_viewType.Subscribe (type => {
if(type == ViewType.Menu)
{
EventSystem.current.SetSelectedGameObject(m_btnA.gameObject);
}
}).AddTo (this);
m_btnA.OnClickAsObservable ().Subscribe (_ => {
m_viewType.Value = ViewType.ViewA;
}).AddTo (this);
m_btnB.OnClickAsObservable ().Subscribe (_ => {
m_viewType.Value = ViewType.ViewB;
}).AddTo (this);
m_btnC.OnClickAsObservable ().Subscribe (_ => {
m_viewType.Value = ViewType.ViewC;
}).AddTo (this);
}
}
SubViewScript.csusing UnityEngine;
using UnityEngine.UI;
using UniRx;
using UnityEngine.EventSystems;
public class SubViewScript : MonoBehaviour {
[SerializeField]private ViewType m_targetType;
[SerializeField]private MenuViewScript m_mainScript;
[SerializeField]private Button m_backBtn;
void Start () {
m_mainScript.m_viewType.Subscribe (type => {
if(type == m_targetType)
{
this.gameObject.SetActive (true);
EventSystem.current.SetSelectedGameObject(m_backBtn.gameObject);
}else{
this.gameObject.SetActive (false);
}
}).AddTo (this);
m_backBtn.OnClickAsObservable ().Subscribe (_ => {
m_mainScript.m_viewType.Value = ViewType.Menu;
}).AddTo (this);
}
}
Inspector를 통해 설정
그나저나 아까 공예품 덕분에 여기 ViewType을 만지작거리며 메뉴를 변경할 수 있어요.
(ViewB/ViewC는 거의 같기 때문에 할애)
게임 실행
쿵!
이런 문법의 장점
ViewType에 항목을 추가하기만 하면 화면 수를 간단하게 늘릴 수 있습니다.
또 각 기능은 거의 독립돼 변경이 쉽다.
후기
시간이 없어서 약간 누락된 느낌이지만 ReactiveProperty만으로도 여러 가지를 사용할 수 있어요.
간단한 일을 많이 할 수 있다.
(참고로 이 샘플 프로젝트를 만드는 데 10분 정도 걸린다)
만져봐도 돼요.
내일 사쿠야.sunday의 "unity와 Arduino는 무엇을 합니까?"네.
Reference
이 문제에 관하여(UniRx를 사용하여 RPG 메뉴 화면 같은 것을 쉽게 만들 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ShiroKuro/items/984fefb7e109e99498a9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이런 느낌의 화면을 만들다.
오른쪽 보기에는 항목 수량만 생성됩니다.
설정 버튼
제목 이외의 텍스트에 Buton 구성 요소 추가
프레임은 선택한 프레임, 하이라이트/누르는 경우에만 표시됩니다.
또 버튼 내비게이션은 이런 느낌으로 설정됐다.
화면 표시 유형을 나타내는 열거체를 준비하다
여기까지 하면 대본이야.
우선 제목에 따라 열거체를 준비한다.그나저나 유닛이 손발을 좀 쓰면 진전이 많을 거예요.
ViewType.csusing UniRx;
public enum ViewType{
Menu,
ViewA,
ViewB,
ViewC
}
[System.Serializable]
public class ViewTypeReactiveProperty : ReactiveProperty<ViewType>
{
public ViewTypeReactiveProperty ()
{
}
}
#if UNITY_EDITOR
[UnityEditor.CustomPropertyDrawer(typeof(ViewTypeReactiveProperty))]
public class ViewTypeReactivePropertyDrawer : InspectorDisplayDrawer
{}
#endif
다음은 상태 관리 & 메뉴 표시용 스크립트와 각 화면 제어용 스크립트를 준비합니다.
버튼 바인딩 같은 건 UniRx에서 만든 거예요.
MenuViewScript.csusing UnityEngine;
using UnityEngine.UI;
using UniRx;
using UnityEngine.EventSystems;
public class MenuViewScript : MonoBehaviour {
public ViewTypeReactiveProperty m_viewType;
[SerializeField]private Button m_btnA;
[SerializeField]private Button m_btnB;
[SerializeField]private Button m_btnC;
void Start()
{
m_viewType.Subscribe (type => {
if(type == ViewType.Menu)
{
EventSystem.current.SetSelectedGameObject(m_btnA.gameObject);
}
}).AddTo (this);
m_btnA.OnClickAsObservable ().Subscribe (_ => {
m_viewType.Value = ViewType.ViewA;
}).AddTo (this);
m_btnB.OnClickAsObservable ().Subscribe (_ => {
m_viewType.Value = ViewType.ViewB;
}).AddTo (this);
m_btnC.OnClickAsObservable ().Subscribe (_ => {
m_viewType.Value = ViewType.ViewC;
}).AddTo (this);
}
}
SubViewScript.csusing UnityEngine;
using UnityEngine.UI;
using UniRx;
using UnityEngine.EventSystems;
public class SubViewScript : MonoBehaviour {
[SerializeField]private ViewType m_targetType;
[SerializeField]private MenuViewScript m_mainScript;
[SerializeField]private Button m_backBtn;
void Start () {
m_mainScript.m_viewType.Subscribe (type => {
if(type == m_targetType)
{
this.gameObject.SetActive (true);
EventSystem.current.SetSelectedGameObject(m_backBtn.gameObject);
}else{
this.gameObject.SetActive (false);
}
}).AddTo (this);
m_backBtn.OnClickAsObservable ().Subscribe (_ => {
m_mainScript.m_viewType.Value = ViewType.Menu;
}).AddTo (this);
}
}
Inspector를 통해 설정
그나저나 아까 공예품 덕분에 여기 ViewType을 만지작거리며 메뉴를 변경할 수 있어요.
(ViewB/ViewC는 거의 같기 때문에 할애)
게임 실행
쿵!
이런 문법의 장점
ViewType에 항목을 추가하기만 하면 화면 수를 간단하게 늘릴 수 있습니다.
또 각 기능은 거의 독립돼 변경이 쉽다.
후기
시간이 없어서 약간 누락된 느낌이지만 ReactiveProperty만으로도 여러 가지를 사용할 수 있어요.
간단한 일을 많이 할 수 있다.
(참고로 이 샘플 프로젝트를 만드는 데 10분 정도 걸린다)
만져봐도 돼요.
내일 사쿠야.sunday의 "unity와 Arduino는 무엇을 합니까?"네.
Reference
이 문제에 관하여(UniRx를 사용하여 RPG 메뉴 화면 같은 것을 쉽게 만들 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ShiroKuro/items/984fefb7e109e99498a9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
여기까지 하면 대본이야.
우선 제목에 따라 열거체를 준비한다.그나저나 유닛이 손발을 좀 쓰면 진전이 많을 거예요.
ViewType.cs
using UniRx;
public enum ViewType{
Menu,
ViewA,
ViewB,
ViewC
}
[System.Serializable]
public class ViewTypeReactiveProperty : ReactiveProperty<ViewType>
{
public ViewTypeReactiveProperty ()
{
}
}
#if UNITY_EDITOR
[UnityEditor.CustomPropertyDrawer(typeof(ViewTypeReactiveProperty))]
public class ViewTypeReactivePropertyDrawer : InspectorDisplayDrawer
{}
#endif
다음은 상태 관리 & 메뉴 표시용 스크립트와 각 화면 제어용 스크립트를 준비합니다.버튼 바인딩 같은 건 UniRx에서 만든 거예요.
MenuViewScript.cs
using UnityEngine;
using UnityEngine.UI;
using UniRx;
using UnityEngine.EventSystems;
public class MenuViewScript : MonoBehaviour {
public ViewTypeReactiveProperty m_viewType;
[SerializeField]private Button m_btnA;
[SerializeField]private Button m_btnB;
[SerializeField]private Button m_btnC;
void Start()
{
m_viewType.Subscribe (type => {
if(type == ViewType.Menu)
{
EventSystem.current.SetSelectedGameObject(m_btnA.gameObject);
}
}).AddTo (this);
m_btnA.OnClickAsObservable ().Subscribe (_ => {
m_viewType.Value = ViewType.ViewA;
}).AddTo (this);
m_btnB.OnClickAsObservable ().Subscribe (_ => {
m_viewType.Value = ViewType.ViewB;
}).AddTo (this);
m_btnC.OnClickAsObservable ().Subscribe (_ => {
m_viewType.Value = ViewType.ViewC;
}).AddTo (this);
}
}
SubViewScript.csusing UnityEngine;
using UnityEngine.UI;
using UniRx;
using UnityEngine.EventSystems;
public class SubViewScript : MonoBehaviour {
[SerializeField]private ViewType m_targetType;
[SerializeField]private MenuViewScript m_mainScript;
[SerializeField]private Button m_backBtn;
void Start () {
m_mainScript.m_viewType.Subscribe (type => {
if(type == m_targetType)
{
this.gameObject.SetActive (true);
EventSystem.current.SetSelectedGameObject(m_backBtn.gameObject);
}else{
this.gameObject.SetActive (false);
}
}).AddTo (this);
m_backBtn.OnClickAsObservable ().Subscribe (_ => {
m_mainScript.m_viewType.Value = ViewType.Menu;
}).AddTo (this);
}
}
Inspector를 통해 설정
그나저나 아까 공예품 덕분에 여기 ViewType을 만지작거리며 메뉴를 변경할 수 있어요.
(ViewB/ViewC는 거의 같기 때문에 할애)
게임 실행
쿵!
이런 문법의 장점
ViewType에 항목을 추가하기만 하면 화면 수를 간단하게 늘릴 수 있습니다.
또 각 기능은 거의 독립돼 변경이 쉽다.
후기
시간이 없어서 약간 누락된 느낌이지만 ReactiveProperty만으로도 여러 가지를 사용할 수 있어요.
간단한 일을 많이 할 수 있다.
(참고로 이 샘플 프로젝트를 만드는 데 10분 정도 걸린다)
만져봐도 돼요.
내일 사쿠야.sunday의 "unity와 Arduino는 무엇을 합니까?"네.
Reference
이 문제에 관하여(UniRx를 사용하여 RPG 메뉴 화면 같은 것을 쉽게 만들 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ShiroKuro/items/984fefb7e109e99498a9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
쿵!
이런 문법의 장점
ViewType에 항목을 추가하기만 하면 화면 수를 간단하게 늘릴 수 있습니다.
또 각 기능은 거의 독립돼 변경이 쉽다.
후기
시간이 없어서 약간 누락된 느낌이지만 ReactiveProperty만으로도 여러 가지를 사용할 수 있어요.
간단한 일을 많이 할 수 있다.
(참고로 이 샘플 프로젝트를 만드는 데 10분 정도 걸린다)
만져봐도 돼요.
내일 사쿠야.sunday의 "unity와 Arduino는 무엇을 합니까?"네.
Reference
이 문제에 관하여(UniRx를 사용하여 RPG 메뉴 화면 같은 것을 쉽게 만들 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ShiroKuro/items/984fefb7e109e99498a9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
시간이 없어서 약간 누락된 느낌이지만 ReactiveProperty만으로도 여러 가지를 사용할 수 있어요.
간단한 일을 많이 할 수 있다.
(참고로 이 샘플 프로젝트를 만드는 데 10분 정도 걸린다)
만져봐도 돼요.
내일 사쿠야.sunday의 "unity와 Arduino는 무엇을 합니까?"네.
Reference
이 문제에 관하여(UniRx를 사용하여 RPG 메뉴 화면 같은 것을 쉽게 만들 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ShiroKuro/items/984fefb7e109e99498a9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)