플레시: 구축 및 실행
다음은 플래시(Flash)로 내보내는 새 프로젝트를 구축하고 실행하는 방법을 단계별로 알려주고 있습니다.
- Unity 콘텐츠를 생성합니다.
- File→Build Settings을 선택하여 구축설정(Build Settings) 대화 창을 불러와 사용자의 씬(scene)에 추가합니다.
- 플랫폼(Platform)을 플래시 플레이어(Flash Player)로 변경합니다.
- 대상 플레이어는 기본값으로 둘 수 있습니다. 이 옵션을 선택하면 사용자가 필요로 하는 기능에 따라 대상 플래시 플레이어를 변경할 수 있습니다 (자세한 사항은 http://www.adobe.com/support/documentation/en/flashplayer/releasenotes.html 을 참조).
- Development Build을 체크합니다. (이렇게 하는 Unity가 최종 SWF 파일을 _압축하지 않습니다_. 압축을 하지 않으면 구축이 빨라지고, 또한 플래시 플레이어에서 실행 할 때 SWF 파일의 압축을 풀지 않아도 되게 됩니다. Development Build 을 사용하여 빈 씬(scene)을 구축하면 SWF 파일 크기가 약 16M 정도 되며, 압축 파일과 비교하면 2M가 될 것입니다).
- 사용자가 PhysX 엔진이 필요 없다면 Strip Physics Code을 선택할 수 있습니다. 만일 이것이 체크되면, 구축 시 PhysX 엔진을 최종 SWF로 컴파일 하지 않게 되며, 결과적으로 더 작은 크기의 파일이 생성됩니다.
- Press the Build 버튼을 누릅니다.
Unity는 사용자가 선택하는 위치에 SWF 파일을 구축합니다. 추가적으로 이는 다음 파일을 생성할 것 입니다:
- 하나의 html 파일 - 이를 사용하여 플래시로 구축한 콘텐트를 봅니다.
- 하나의 swfobject.js 파일 - 플래시 플레이어와 브라우저 통합에 대한 검사를 처리합니다.
- 하나의 UnityShared.swc 파일.
사용자의 플래시로 구축한 콘텐트를 보려면 html 파일을 엽니다. SWF 파일을 직접적으로 열지 마십시오.
구축과 실행은 같은 파일을 생성할 것이며, 사용자의 기본 브라우저를 시작하고 생성된 html 파일을 로딩합니다.
이 구축에서 생성된 UnityShared.swc 파일은 사용자 자신의 프로젝트 내에서 SWF 파일을 로딩할 수 있게 해 줍니다. Unity 콘텐트를 표준 플래시 프로젝트에 내장하면 사용자가 GUI을 플래시 내에서 할 수 있게 해 줍니다. 이런 유형의 플래시 내장은 다른 구축 대상에서는 물론 동작하지 않을 것 입니다.
다른 구축 대상과 마찬가지로, 사용자가 명시해야 하는 플레이어 설정이 있습니다. 대부분의 플래시 설정은 다른 플랫폼과 공유됩니다. 콘텐트에 대한 해상도는 독립(Standalone) 플레이어 설정에서 가져옵니다.
Flash API는 사용자에게 텍스처 핸들(handles)을 제공하므로 Unity는 이를 허용하고, 이것은 swc 내장과 함께 사용자에게 플래시에서 텍스처로써 웹캠, 비디오, 벡터 그래픽을 수행할 수 있는 수단을 제공할 것 입니다.
텍스처의 지원
우리는 jpeg
텍스처와 함께 RGBA/트루컬러를 지원합니다. 이 압축 비율은 또한 'Override for FlashPlayer' 설정 하에서 불러들인 텍스처에서 명시할 수 있습니다. 압축된 텍스처는 선택된 압축 비율로 jpeg
로 변환됩니다. 압축 비율은 최종 SWF의 크기를 상당히 줄여줄 수 있으므로 여러 실험을 거쳐 정할만한 가치가 있습니다.
텍스처 품질은 0에서 100까지 범위이고, 100은 압축 없음을 나타내고, 0은 가능한 가장 높은 양의 압축을 나타냅니다.
The maximum supported texture resolution is 지원하는 가장 높은 텍스처 해상도는 2048x2048 입니다.
구축 에러와 및 경고
구축 과정(The Building Process)
Unity 플래시 발행기(Publisher)는 C#/UnityScript로부터의 스크립트를 ActionScript로 변환하려고 합니다. 이 과정에서, 두 가지의 변환 에러가 있을 수 있습니다:
- 코드를 ActionScript로 변환하는 동안 발생하는 에러
- 변환된 코드를 압축하는 동안 발생하는 에러
변환 중 에러는 원래 파일을 가리킬 것이고 파일 이름과 라인 수를 알려주는 UnityScript 에러 메시지와 유사할 것 입니다.
변환된 ActionScript의 컴파일 과정에서 발생하는 에러는 생성된 ActionScript 코드에서 생성된 메시지로 사용자에게 보내질 것 입니다(파일 이름이 .as
로 끝남).
변환된 ActionScript 코드로 디버깅 수행
구축 과정에서, 변환된 ActionScript (.as
) 파일들은 사용자의 다음 프로젝트 폴더 내에 저장됩니다:
- /Temp/StagingArea/Data/ConvertedDotNetCode/
사용자의 SWF에 에러가 발생하면(수행 시 혹은 구축 시), 이 변환된 코드를 확인하는 것이 유용할 수 있습니다.
컴파일 시 발생한 모든 ActionScript 에러는 쉽게 이해되지 않을 수 있습니다. 다만 이 ActionScript가 사용자의 게임 스크립트 코드로부터 발생하였음을 기억하기 바라며, 그러므로 사용자가 행하는 모든 변경사항은 사용자의 원래 코드에는 포함되지만 ActionScript 파일로 변환되지는 않습니다.
특정 에러와 경고
1. 이 에러 메시지는 무엇을 의미하는가?
"Failed assemblies stripper ... Unhandled Exception: Mono.Linker.ResolutionException: Can not resolve reference: System.String UnityEngine.WWW::get_text()"
→ 이는 사용자가 프로젝트에 플래시 지원을 염두에 두지 않은 dll과 Unity 플래시가 지원하지 않는 참조 클래스(references classes)로 프리 컴파일(precompile)을 수행하였다는 것을 의미합니다.
2. 다음 메시지가 발생하는 이유:
'TerrainCollider' is not supported when building for FlashPlayer. 'TerrainData' is not supported when building for FlashPlayer. Asset: 'Assets/New Terrain.asset'
→ 이 지형(terrain) 기능은 해당 FlashPlayer 목표대상에 대해서 빌드시에는 지원하지 않습니다. 모든 지원하지 않는 기능은 비슷한 경고를 표시합니다. 하지만 해당 빌드은 계속되고, 지원하지 않는 기능은 최종 SWF에서 빠진다는 것을 명심하기 바랍니다.
3a. 다음 메시지가 발생하는 이유:
Error: Call to a possibly undefined method RuntimeServices_UnboxSingle_Object through a reference with static type Class.
이는 UnityScript 쪽에서 정의된 타입 사이의 변환이 우리 Flash Publisher에서 정의되지 않았을 가능성이 있습니다. Unbox
을 언급하는 에러를 볼 때마다 타입 변환이 필요하나 발견되지 않았다는 것을 의미합니다.
3b. 어떤 조치를 취해야 할 까요?
→ #pragma strict
을 사용하는 것을 잊어버리지 말고, 모든 "implicit downcast" 경고 메시지를 해결해야 합니다.
→ 경험에 근거한 규칙으로는 Object 에서 기본타입(primitive types, int, float 등)으로 실행 중 캐스트(casts)을 피하는 것이 좋습니다. 또한 generic 한 것 보다는 explicit 타입의 container을 선호하기 바랍니다, 예를 들어:
- Array 대신 System.Collections.Generic.List.<float>
- Hashtable 대신 Dictionary<string, float>
4. 왜 다음과 같은 메시지나 나타나나요?
Error building Player: UnauthorizedAccessException: Access to the path "Temp/StagingArea/Data/ConvertedDotNetCode/global" is denied.
→ 텍스트 편집기에 Unity가 생성한 ActionScript을 열면, Unity는 이러한 에러를 표시하여 빌드를 거절할 것입니다. 이를 고치려면, ActionScript을 닫고 Unity가 이를 덮어쓸게 있게 해 주어야 합니다.
주의: Flash 내보내기 기능은 개발자 프리뷰로 현재 사용 가능합니다. 이 기능은 여전히 개발 중이고 그러므로 위 정보는 변경될 수 있습니다.''
- 출처: 유니티코리아위키 (CC BY-NC-SA 2.0)