GSI

Button을 Prefab로 등록한후 게임상에서 환경에 따라서 Button을 여러개 생성해야할 경우가 생긴다.

부모가 되는 GameObject의 Transform 객체 하부로 연결하면 된다.


> GameController 는 Main Camera 에 스크립트로 등록한다.

> uiRoot는 UI의 최상의 Canvas 객체이다.

> tileButton는 Prefab로 등록되어 있는 버튼 객체이다.


Start() 함수에서

Instantiate (tileButton); 이 코드만 실행하면 Root의 자식으로 생기기 때문에 

원래 의도한 Canvas의 자식으로 생성되지 않는다.

아래와 같은 코드로 하게 되면 자식으로 등록이 된다.


-- 코드 --

using UnityEngine;

using UnityEngine.UI;

using System.Collections;


public class GameController : MonoBehaviour {


public GameObject uiRoot;

public Button tileButton;


// Use this for initialization

void Start () {

Button child = Instantiate (tileButton);

child.transform.parent = uiRoot.transform;

}

// Update is called once per frame

void Update () {

}

}


하지만 위와 같이 하면 동작은 되지만 아래와 같은 메시지가 뜨게 된다.

Parent of RectTransform is being set with parent property. Consider using the SetParent method instead, with the worldPositionStays argument set to false. This will retain local orientation and scale rather than world orientation and scale, which can prevent common UI scaling issues.


이 경우 SetParent()를 사용하면 된다.


child.transform.parent = uiRoot.transform;

child.transform.SetParent (uiRoot.transform);

Posted by gsi
:

안드로이드에서 Back 버튼에 대한 이벤트는 아래와 같이 처리 하면된다.


if( Input.GetKeyDown( KeyCode.Escape ) )

{

   // 처리할 로직을 여기에 넣으면 된다.

}


Update()에서 값을 체크 해서 사용하면 된다.

Posted by gsi
:


Unity3D 해상도 1:1 매칭을 위한 카메라값 설정


1:1 픽셀을 유지 하기 위해서는 가로 해상도 보다는 세로 해상도에 대해서 절반값을 카메라로 정해주면 된다.

Main Camera을 선택하고

Projection을 Orthographic로 설정후

Size의 값을 해당 해상도의 높이/2로 설정하면 된다.


저는 보통 800X1280을 사용하기 때문에

1280/2 해서 640으로 설정하면 된다.




이후 UI를 구성할때 Canvas의 구성은 아래와 같이 진행 한다.


Canvas의 Render Mode는 Screen Space - Camera 로 설정한다.

Plane Distance는 적당히 잡아 주면 된다.


Canvas Scaler의 UI Scale Mode는 Scale With Screen Size 로 설정한다.

Reference Resolution은 X:800, Y:1280 으로 설정한다.

Screen Match Mode는 Match Width Or Height로 설정한다.

Reference Pixels Per Unit는 1로 설정한다.



Posted by gsi
: