2012-02-16 7 views
1

JavaScript를 사용하여 Unity3D 플러그인에서 장면을 제어 할 수 있습니까? JavaScript-Code는 Unity3D Plugin의 컨텍스트가 아닌 브라우저 컨텍스트에서 실행해야합니까?Unity3D를 외부 JavaScript로 제어 할 수 있습니까?

장면의 오브젝트를 변형, 삭제 및 추가해야합니다.

아마도 예제가 있습니까?

어떤 조언을 주셔서 감사합니다.

답변

2

예, 가능합니다. 적어도 완료했음을 알고 있지만 꽤 오래되었습니다.

Here's the demo page 나는 그 때 다시 조립했다.

페이지의 소스 코드를 자유롭게 살펴보십시오. 대부분은 Unity's docs and examples에서옵니다. Unity 웹 플레이어와주고받는 메시지를주고받는 간단한 래퍼를 만들었으며 코드를 조금 수정했습니다.

내 코드는 Prototype.js을 기반으로하므로 요즘 대부분의 사람들처럼 jQuery를 사용하는 경우 약간의 재 작성이 필요하지만 너무 나쁘지는 않습니다. 또는 유니티의 사전 제작 된 물건을 사용할 수도 있습니다.

저는 대개 유니티 코더가 아니므로 유니티 측의 설정 방법을 정확하게 말할 수는 없습니다 (내가 본 간단한 쉐이더 기반 데모를 만들었지 만 소스를 잃어 버렸습니다. 파일이라고 생각합니다.) 그러나 기억 하건데, 그것은 일련의 공용 메서드로 게임 개체를 만드는 문제였습니다. 이러한 메서드는 JavaScript를 통해 호출 할 수 있습니다. 그처럼 간단합니다.

기본적으로, JS-측면에서, 당신이 할 일은 이것이다 : 당신이 원하는 경우

var player = document.getElementById("UnityObject"); 
player.sendMessage("name of game object", "name of method", "argument"); 

또한, 자바 스크립트로 다시 게임 오브젝트에서 메시지를 보낼 수 있습니다. 데모에서는 발생하지 않지만 작동해야합니다. 자세한 내용은 출처를 확인하십시오.

+0

장면에 둘 이상의 개체가 있고 장면의 다른 개체로 이동하는 카메라가 있으면 어떻게됩니까? –

+0

@KalaJ First :이 정보는 최신 정보가 아닙니다. 지난 2 년 동안 API가 변경되었는지는 알 수 없습니다. 어쨌든, 내가 아는 한, 개체 이름을 알고있는 한 장면의 모든 게임 개체에 메시지를 보낼 수 있습니다. 하지만 매우 역동적이라면 1 개의 객체를 컨트롤러로 사용하는 것이 더 쉬울 것이라고 생각합니다. (어떤 방식 으로든 표시 할 필요가 없으며 항상 있어야합니다.) 그래서 JS는 컨트롤러 객체와 만 대화를하고, 객체는 Unity 객체를 처리합니다. – Flambino

관련 문제