액티브 콘텐트의 발행(Publishing active content)
Unity의 Web Player
콘텐트와 같은 액티브 콘텐트를 발행 할 경우, 개발자는 해당 콘텐트가 다양한 브라우저에서 어떻게 처리될 것인가에 대한 고려를 하여야 합니다. 특히, Microsoft's Internet Explorer에서 해당 콘텐트가 어떻게 처리되는 가를 고려해야 하는데 이는 이 특정 브라우저는 오늘날의 다른 지원되는 브라우저야 약간 다르게 동작하기 때문입니다. 사용자의 웹 페이지에 사용자 콘텐트가 어떻게 내장 되어 있는가에 따라, 그것이 마우스나 키보드 입력에 반응하려면 최종사용자가 해당 콘텐트를 구동 하여야 할 수 있습니다. 그 콘텐트를 구동하려면, 최종 사용자는 그 콘텐트 자체를 한번 클릭하거나, 혹은 ActiveX Control을 로딩하기 위하여 대화 창에서 OK을 클릭해야 할 수도 있습니다. 이것이 웹 플레이어 콘텐트가 Internet Explorer에서 사용되는 것을 방지하지는 않지만, 이는 최종 사용자로써는 혼란스러울 가능성이 있고 최상의 경험은 아닐 수 있습니다. 다행히도, Microsoft는 최종 사용자가 웹 플레이어 콘텐트를 구동하는데 클릭을 하지 않아도 될 수 있는 방법으로 개발자가 웹 페이지를 생성하거나 업데이트 할 수 있는 페이지 디자인 솔루션을 제공하였습니다. 다음에는 이 솔루션 중 하나를 구현하는 방법을 상세하게 보여주고 있습니다.
Internet Explorer 에서 ActiveX Controls을 구동하는 데 대한 상세한 정보를 보려면, Activating ActiveX Controls을 참조하십시오.
최종 사용자가 Unity Web Player을 사용하기 전에 구동해야 하는 번거로움을 방지하기 위하여, 런타임 중 웹 페이지에 필요한 오브젝트 태그를 동적으로 작성하기 위하여 외부 JavaScript 파일을 사용하여야 합니다. 설명의 단순화를 위하여, 여기에 설명한 솔루션은 모든 브라우저에서 페이지를 똑 같이 로딩하고 재생하게 하려고, 외부 JavaScript 파일을 사용하여 오브젝트와 내장 태그 모두를 작성할 것 입니다. 가장 간단한 케이스로, 외부 JavaScript 파일을 함수와 함께 사용하는 데, 이 함수를 호출하면 document.write()을 사용하여 필요한 오브젝트와 내장 태그를 작성할 것 입니다.
다음은 필요한 오브젝트와 내장 태그를 동적으로 생성하는 document.write() 호출을 사용하는 JavaScript 함수의 예제입니다:
<script type="text/javascript" language="javascript"> function writeUnityTags (aSrc, aWidth, aHeight) { // write the content object and embed tags document.write("<object "); document.write(" classid='clsid:444785F1-DE89-4295-863A-D46C3A781394' n"); document.write(" codebase='http://webplayer.unity3d.com/download_webplayer/UnityWebPlayer.cab#version=2,0,0,0' n"); document.write(" id='UnityObject' width='" + aWidth + "' height='" + aHeight + "' > n"); document.write(" <param name='src' value='" + aSrc + "' /> n"); document.write(" <embed type='application/vnd.unity' pluginspage='http://www.unity3d.com/unity-web-player-2.x' n"); document.write(" id='UnityEmbed' width='" + aWidth + "' height='" + aHeight + "' src='" + aSrc + "' n"); document.write(" /> n"); document.write("</object>"); } </script>
위에서 함수 호출 시 3개의 매개변수를 전달하는 것을 주시합니다. 이 매개변수는 웹 플레이어 데이터 파일의 경로와 표시되는 콘텐트의 넓이와 높이를 전달 합니다. 이 매개변수를 사용하여 해당 함수가 호출하는 오브젝트와 내장 태그를 직접 해당 웹 페이지에 작성합니다.
다음은 웹 페이지에 writeUnityTags() JavaScript을 사용하는 예제입니다. 이 함수는 unityweb.js라는 이름은 외부 JavaScript 파일에서 정의하고 있습니다:
<script type="text/javascript" language="javascript" src="unityweb.js"></script> <script type="text/javascript" language="javascript"> // call the writeUnityTags function writeUnityTags("MyFile.unity3d", 640, 480); </script>
오브젝트와 내장 태그를 작성하는 것이 오로지 그 목적인 함수를 포함하는 이 외부 JavaScript을 사용하여, 최종 사용자가 콘텐트를 사용하고 그것과 상호작용을 하기 전에 구동해야 하는 것을 피하게 할 수 있습니다. 추가적으로, 위 솔루션은 모든 브라우저에서 올바르게 동작하므로, 이것을 구현하게 되면 최종 사용자가 어떤 브라우저와 플랫폼의 조합을 사용하여도 일관적인 체험을 하게 할 수 있을 것 입니다.
여기에 설명한 기술과 함께 Detecting the Unity Web Player using browser scripting에서 논한 웹 플레이어 감지 루틴(detection routine)을 합하면 예측할 수 있고 최적화 된 최종 사용자 체험을 제공하게 됩니다. 다음은 detectUnityWebPlayer() 와 writeUnityTags() 함수를 모두 사용하는 예로써, 두 함수 모두 unityweb.js라는 이름의 외부 JavaScript 파일에서 정의됩니다:
<script type="text/javascript" language="javascript" src="unityweb.js"></script> <script type="text/javascript" language="javascript"> // check for the Unity Web Player and respond appropriately var tIsInstalled = detectUnityWebPlayer(); if (tIsInstalled) { // call the writeUnityTags function writeUnityTags("MyFile.unity3d", 640, 480); } else { // write out a simple message prompting the user to install the Unity Web Player document.write("<div align='center'> n"); document.write(" This content requires the Unity Web Player,"); document.write(" please use the link below to install the player today:<br /><br /> n"); document.write(" <a href='http://www.unity3d.com/unity-web-player-2.x'> n"); document.write(" Install the Unity Web Player n"); document.write(" </a> n"); document.write("</div> n"); } </script>
- 출처: 유니티코리아위키 (CC BY-NC-SA 2.0)