레이블이 Unity인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Unity인 게시물을 표시합니다. 모든 게시물 표시

2018-10-26

Unity - 스크립트에서 한글 입력시 깨짐 현상

* C# 스크립트에서 텍스트를 대입하면 실행시 깨져서 나오는 경우가 있습니다.

예) _uiTitleText.text = "한글입력확인";

* 아무리 봐도 로직상에 문제가 없다면 스크립트 파일 형식이 UTF-8 형식으로 바꾸어 줘야합니다.

* VS나 기타 에디터로 스크립트를 UTF-8 형식으로 바꾸고 다시 저장하면 해결이 됩니다.

* Git이나 다른 소스 관리 툴이 파일 형식을 자동으로 바꿀수 있으니 그 부분도 확인해야 합니다.

Unity - 화면 좌표로 UI 좌표를 얻기

* 화면에서 마우스 클릭 위치로 UI 패널을 이동시키는 것과 같은 처리를 할 경우 RectTransformUtility.ScreenPointToLocalPointInRectangle()을 이용합니다.


RectTransform referRect = _scenePanel.GetComponent<RectTransform>();
RectTransform rectTrans = _infomationPanel.GetComponent<RectTransform>();
Canvas canvas = _infomationPanel.GetComponentInParent<Canvas>();
Vector2 mousePosition = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
Vector2 localPoint;
RectTransformUtility.ScreenPointToLocalPointInRectangle(referRect, mousePosition, canvas.worldCamera, out localPoint);

* 주어진 referRect를 참고하여 마우스 위치(스크린 위치)에 해당하는 상대적인 UI 좌표를 localPoint에 담습니다.

* 참조 캔버스의 월드 카메라는 null일 수 있으나 잘 작동합니다.

2018-06-25

Unity - Video Player 비디오 클립 동적 변경 및 출력

* 비디오 플레이어에서 클립을 동적 변경 시에는 Prepare를 수행후 Prepare가 완료되어야 출력이 가능합니다. 비디오 클립은 인스탄스화된 객체가 아니라 리소스에서 바로 로딩한 객체이여야 합니다.

* Prepare된 상태의 이벤트 핸들러를 등록할 수 있습니다.


public VideoPlayer _videoPlayer;

void Awake()
{
    _videoPlayer.prepareCompleted += OnVideoPrepared;
    _videoPlayer.clip = Resources.Load<VideoClip>("ExamClip");
    _videoPlayer.Prepare();
}

void OnVideoPrepared(VideoPlayer source_)
{
    _videoPlayer.Play();
}

2017-09-12

Unity - 안드로이드 기기 볼륨 조절

* 자세한 설명은 생략한다.

private static AndroidJavaObject _mainActivity = null;
private static AndroidJavaObject _androidAudioManager = null;
private static int _maxVolume = 0;

public static AndroidJavaObject GetMainActivity()
{
   if (_mainActivity == null)
{
var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
     _mainActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
}

return (_mainActivity);
}

public static AndroidJavaObject GetAndroidAudioManager()
{
if (_androidAudioManager == null)
  {
   _androidAudioManager = GetMainActivity().Call<AndroidJavaObject>("getSystemService", "audio");
_maxVolume = _androidAudioManager.Call<int>("getStreamMaxVolume", 3);
}
  return (_androidAudioManager);
}

// 볼륨 확인
public int GetVolume()
{
    AndroidJavaObject audioManager = GetAndroidAudioManager();
    return audioManager.Call<int>("getStreamVolume", 3);
}

// 볼륨 설정, 인자는 0부터 1 사이 값, _maxVolume과 비율로 설정해야 할 것으로 보임
public void SetVolume(float fVolume_)
{
  AndroidJavaObject audioManager = GetAndroidAudioManager();
audioManager.Call("setStreamVolume", 3, (int)fVolume_, 0);

}

* 출처: 회사 동료

2017-01-20

Unity - UI 객체 Picking

* UI 객체 피킹 확인
- UI 객체를 스크린 좌표를 기준으로 확인을 합니다.
- 이벤트 시스템에서 확인 가능합니다.

// 사용 이벤트 시스템 (eventObject는 예제로 설정)
EventSystem eventSystem = eventObject.GetComponentInChildren<EventSystem>();

PointerEventData pointerData = new PointerEventData(eventSystem);
pointerData.Reset();
Vector2 delta = new Vector2(1.0f, 1.0f);
pointerData.delta = delta;
pointerData.position = Input.mousePosition;

List<RaycastResult> rayResult = new List<RaycastResult>();
eventSystem.RaycastAll(pointerData, rayResult);
if (rayResult.Count > 0)
{
    // 판별 조건(예로 이름으로 판단)
    if (rayResult[0].gameObject.name == "ChracterSelectPanel")
    {
        return (true);
    }
}

return (false);

2016-02-26

Unity - 안드로이드 폰에서 뒤로가기 버튼 처리

* 안드로이드 폰에서 뒤로가기 버튼은 일반 PC의 ESC 버튼으로 인식한다.

* 아래와 같이 처리해주면 뒤로가기 버튼 처리가 된다.


void    Update()
{
#if UNITY_ANDROID
    if (Input.GetKey(KeyCode.Escape))
    {
        // 여러가지 처리들
        Application.Quit();
    }
#endif
}

2015-11-17

Unity - 앱스토어, 플레이스토어 링크 및 웹 페이지 열기

[iOS 앱 스토어 링크 열기]

* 앱 스토어 앱으로 열기

   Application.OpenURL("itms-apps://itunes.apple.com/app/id1234567890")



[Android 플레이 스토어 링크 열기]

* 마켓 앱으로 열기

   Application.OpenURL("market://details?id=com.Company.Project");


* 일반 웹 브라우져로 열기

   Application.OpenURL("https://play.google.com/store/apps/details?id=com.Company.Project");


[일반 웹 페이지 열기]

* 일반 웹 브라우져로 열기
 - 일부 Adroid 기기에서는 "http:"를 생략하면 링크가 열리지 않는 현상이 있음

   Application.OpenURL("http://redkim14.blogspot.kr/")