Programming/Unity

[Unity] 유니티 실행 프로그램을 확장된 화면에 출력하기(특히, 노트북 확장 모니터에 출력하기)

변화의 물결1 2023. 10. 7. 18:35

 

 

안녕하세요.

 

  프로그램 개발하는 분이라면 보통 모니터 2개 이상을 사용하고 있을 겁니다. 그런데 유니티로 프로그램을 만들고 실행시켜 보면 현재 실행 시는 모니터에만 계속 프로그램이 나타나는 것을 볼 수 있습니다.

 

 데스크톱 PC일 경우 그래픽카드의 모니터를 물리적으로 바꾼다던지 하면 되는데 메인 화면을 노트북으로 하는 경우 노트북 모니터가 1번으로 1번으로 되어서 계속 노트북화면에만 나타나게 됩니다.  완벽한 방법은 아닌 것 같은데 다른 화면을 다른 화면에 나타나게 할 수 있는 방법을 확인해 보겠습니다.

 

  

1. 카메라 설정하기

 - Hierarchy에서 Main Camera를 선택하고, Target Display를 ComboBox를 선택하면 Display1~8까지 나옵니다. 여기서 노트북으로 출력하려는 모니터를 선택하면 됩니다. 노트북에서 모니터를 확장 선택하면 노트북의 모니터의 식별번호는 1번이고 확장한 모니터는 2번이 됩니다. 보통 HDMI를 1개 지원하겠지만, 특수한 경우 DP 포트 등 2 포트 이상 지원합니다. 그럴 때는 Display를 2번, 3번으로 선택하면 됩니다.

 

 - Display를 2번으로 설정하고  실행하면 1번 실행화면에서는 Display 1 No cameras rendering이라고 Display2에 화면이 나타납니다.

 

 

이렇게 하면 실제 빌드(Build)해서 실행파일을 실행하면 2번 화면에 나타납니다.

그런데 여기서 끝이 아니라, GUI 화면을 사용했다면 하나 더 변경해주어야 합니다.

 

2. Canvas 설정하기

 - UI 컴포넌트를 사용했다면 Hierarchy에 Canvas 객체가 있습니다. 여기서도 Target Display를 설정해주어야 합니다. 그렇지 않으면 Display2와 별개로 Display1에 UI가 납니다.

 - Hierarchy에서 Canvas를 선택한 후에 Target Display에 원하는 Display번호를 선택합니다. 여기서도 2번을 선택합니다.

 

  

- UI실행을 하면 버튼하나 만들어 놓은 것과 함께 2번 화면에 나타나는 것을 확인할 수 있습니다.

 

 

- 이제 빌드해서 실행하면 2번 화면에 나타납니다.

 

3. Display 활성화 코드추가

 - 기본적인 Display는 활성화되기 때문에 문제가 없는데, 확장된 화면은 활성화시켜주어야 한다고 합니다. 그래서 C# 스크립트(DisplayScript.cs) 하나 만들어서 아래와 같은 코드를 하나 넣어줍니다.

 

 

- 활성화할 디스플레이 개수만큼 if문을 추가해 주면 됩니다. 

 

using UnityEngine;
using System.Collections;

public class DisplayScript : MonoBehaviour
{
    // Use this for initialization
    void Start()
    {
        Debug.Log("displays connected: " + Display.displays.Length);
        // Display.displays[0] is the primary, default display and is always ON.
        // Check if additional displays are available and activate each.
        if (Display.displays.Length > 1)
            Display.displays[1].Activate();
        //if (Display.displays.Length > 2)
        //    Display.displays[2].Activate();
        //...
    }
    // Update is called once per frame
    void Update()
    {

    }
}

  

 - Build 혹은 Build and Run을 실행해서 결과를 보면 노트북 모니터 화면이 아닌 다른 곳에서 프로그램이 실행되는 것을 확인할 수 있습니다.

 

4. 미진한 부분

 - 이렇게 하면 원하는 노트북에서도 원하는 모니터에 나타낼 수 있습니다. 그러나 사용하지 않는 메인 노트북의 화면은 Black 화면으로 나타납니다. 노트북화면은 다른 프로그램을 실행해서 실행해도 문제는 없습니다. 그런데 화면자체가 다른 화면으로 이동하는 것은 아니라 완벽한 해결방법은 아니라고 생각됩니다.

 

 혹시 해결방법을 아시는 분은 댓글로 조언 부탁드립니다.

 

 

감사합니다.

 

 

<참고사이트>

https://docs.unity3d.com/kr/2018.4/Manual/MultiDisplay.html

 

 

 

반응형