성엽이
KKIMSSI
성엽이
전체 방문자
오늘
어제
  • 분류 전체보기 (454)
    • :) (2)
    • C프로그래밍이론 (9)
    • C++프로그래밍 (64)
      • STL (1)
    • C# (2)
    • Visual studio 10.0 (9)
    • AT91SAM7S256 (21)
    • 논리회로 (14)
    • AVR2560 (11)
    • TCPIP (16)
    • NetWork (4)
      • Ubuntu Linux (2)
    • Assembly (21)
    • UNIX 프로그래밍 (6)
    • RFID 분석 (1)
    • Win32 API (7)
    • Cortex-M3 (4)
    • Unity (91)
    • Flutter (9)
    • OwnProject (11)
      • It's mine (5)
      • 마인드스톰 실습 (1)
      • 보고서 자료 (2)
      • RPi B+ (2)
    • ETC (25)
      • 상식 (3)
    • MFC (40)
    • PostgeSQL (18)
    • 영상제어 (6)
      • VFW_영상처리 (1)
    • Python (0)
    • Java (30)
      • SpringBoot (2)
      • Javascript (1)
      • JSP (13)
      • Spring (8)
    • Oracle (4)
      • SQL (3)
    • HTML (6)
      • Thymeleaf (1)
      • CSS (1)
      • Bootstrap (3)
    • IDE (1)
      • VS Code (1)
    • Android (2)
    • Privacy Policy (0)
    • MYSQL (2)
      • MariaDB (2)
    • AWS (5)
    • 개인공부 (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
  • 관리자
  • 글쓰기

공지사항

인기 글

태그

  • Boot Code 분석
  • MFC
  • 문자열 나누기
  • WINAPI
  • ARM Reverse Engineering

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
성엽이

KKIMSSI

[Unity] Windows 환경에서 설치 시 문제 생겼던 경험 정리
Unity

[Unity] Windows 환경에서 설치 시 문제 생겼던 경험 정리

2024. 10. 31. 11:11

1. FTDI USB to Serial Driver 문제

이 문제는 SerialPort 를 사용하는 즉, 장치관리자에서 볼 수 있는 '포트 ( COM & LPT )' 에서 호환이 안되면 연결이 되지않고, 드라이버를 설치해야하는데 설치를 해도 Port 가 생성이 안되는 경우가 있다. 이럴땐 반드시 '윈도우 업데이트' 를 한번 해보는 것을 추천한다.

 

위의 FTDI USB 를 윈도우 업데이트를 했더니 또 다시 설치가 되면서 적용이 되는 것을 확인 할 수 있었다.

 

 

2. 유니티에서 File > Build Settings > Player Settings > Player > Other Settings > Configuration 안에

 

Scripting Backend - Mono 또는 IL2CPP 를 설정 할 수 있다.

그리고 SerialPort 를 사용하려면 Api Compatibility Level 에서 .NET Standard 2.1 또는 .NET Framework

를 설정할 수 있는데 이때 선택지를 잘 선택해서 빌드를 해주어야 한다.

 

ChatGPT 를 통해서 검색해본 차이점이다.

 

1. 성능: IL2CPP가 Mono보다 빠름

  • IL2CPP는 C# 코드와 .NET API 호출을 C++로 변환하여 네이티브 코드로 컴파일하기 때문에, 실행 성능이 뛰어납니다. 특히 모바일 및 콘솔 게임에서 IL2CPP의 성능이 Mono보다 훨씬 우수한 경우가 많습니다.
  • 반면, Mono는 JIT(Just-in-Time) 컴파일 방식을 사용합니다. 코드 실행 중에 필요한 부분을 즉시 컴파일하므로 개발 중에는 빠른 실행과 테스트가 가능하지만, 최종 빌드 성능에서는 IL2CPP가 더 뛰어납니다.

2. 보안 및 코드 난독화: IL2CPP가 Mono보다 안전함

  • IL2CPP는 코드가 네이티브 C++로 변환되고, 모든 코드를 AOT(Ahead-of-Time) 컴파일하여 빌드하기 때문에 역공학이 어렵고 보안성이 높습니다.
  • 반면 Mono는 CIL(Common Intermediate Language)로 컴파일된 DLL이 포함되어 배포됩니다. 이 DLL은 쉽게 디컴파일될 수 있어 코드 유출 위험이 있습니다.

3. 플랫폼 지원: IL2CPP는 더 많은 플랫폼에 대응

  • IL2CPP는 iOS, Android, 콘솔(PlayStation, Xbox 등), WebGL과 같은 다양한 플랫폼을 지원합니다. 특히 iOS는 JIT 컴파일을 허용하지 않아 Mono 대신 IL2CPP가 필수입니다.
  • Mono는 일반적으로 Windows, Mac, Linux 데스크탑 환경과 Android를 잘 지원하지만, 콘솔 및 일부 플랫폼에서 제약이 있습니다.

4. 메모리 관리: IL2CPP가 더 나은 관리 가능

  • IL2CPP는 AOT 컴파일 덕분에 메모리 사용량을 더 효과적으로 최적화할 수 있습니다. 이로 인해 메모리 관리와 성능 면에서 IL2CPP가 유리할 때가 많습니다.
  • Mono는 실행 시점에 메모리를 동적으로 할당하고 관리하므로, 특히 고성능이 요구되는 환경에서는 IL2CPP에 비해 다소 불리할 수 있습니다.

 

위의 설명대로 배포를 해주기 위해서는 IL2CPP 가 좋은 성능을 가지고 있지만! 여기서 중요한건

이런 문제다.

IL2CPP와 .NET API 호환성 문제

IL2CPP는 C# 코드를 C++로 변환하여 실행하기 때문에, 모든 .NET 라이브러리와의 호환성을 보장하지 않습니다. System.IO.Ports 라이브러리는 일부 네이티브 Windows API와 직접 상호작용하기 때문에, IL2CPP 빌드 과정에서 문제가 발생할 수 있습니다.

 

즉, 일부 지원해주지 않는 DLL 이 있으므로, 예상치 못한 에러가 발생해서 실행이 안될 수 있다. 그러므로 .NET API 를 사용한다면 빌드를 할때

 

Mono 또는 IL2CPP 를 잘 선택해서 테스트 해봐야한다.

저작자표시 (새창열림)

'Unity' 카테고리의 다른 글

[Unity] 최적화 정리 글 - 개인정리용  (0) 2025.02.19
[Unity] TextMeshPro MarkTag 사용 시 Color Overlay 되는 상황 해결  (0) 2024.10.08
[Unity] Screen Space - Overlay 일때 UI 에 Particle 입히는 방법  (0) 2024.06.26
[Unity] Canvas 위에 마우스 위치 가져오기  (0) 2024.05.08
[Unity] 윈도우 데스크탑 인스톨러 만들기  (0) 2023.08.08
    'Unity' 카테고리의 다른 글
    • [Unity] 최적화 정리 글 - 개인정리용
    • [Unity] TextMeshPro MarkTag 사용 시 Color Overlay 되는 상황 해결
    • [Unity] Screen Space - Overlay 일때 UI 에 Particle 입히는 방법
    • [Unity] Canvas 위에 마우스 위치 가져오기
    성엽이
    성엽이

    티스토리툴바