unity sendmessage 예제


Unity 응용 프로그램 내에서 Application.ExternalCall 및 Application.ExternalEval 기능을 사용하여 Kongregate의 Unity 게임에서 자바스크립트 API에 액세스할 수 있습니다. 편집자 주: 이 기사를 즐겼다면, 앨런의 블로그를 확인해 보시면 더 많은 Unity 튜토리얼을 읽어보세요! 응용 프로그램.ExternalEval 함수의 사용에 유의 합니다 는 kongregateUnitySupport 자바 스크립트 개체가 있는 경우 호출 합니다. API가 로드를 완료하면 Unity의 SendMessage 기능을 사용하여 이름이 전달된 Unity 게임 오브젝트에서 지정된 함수를 호출합니다. 또한 API를 두 번 이상 로드하지 않으면 API 연결이 끊어집니다. 다음은 KongregateUnitySupport 개체를 사용하여 Kongregate API를 로드하고 로드가 완료되면 Unity 응용 프로그램에 알리는 방법의 예입니다. 일반적으로 한 번만 인스턴스화되고 응용 프로그램의 전체 수명 동안 영구적으로 유지되는 GameObject에서 이 작업을 수행하려고 합니다. Unity는 개발자가 다른 스크립트 나 개체를 빠르게 참조 할 수있는 몇 가지 바로 가기를 제공합니다. 가장 일반적인 것은 개체에 연결된 스크립트를 조회하는 데 사용되는 메서드인 GetComponent입니다. 공식 문서에 따르면 GetComponent에는 두 가지 변형이 있습니다: 하나는 구성 요소의 이름을 문자열로 사용합니다(GetComponent(“Rigidbody”)) 다른 하나는 실제 유형(GetComponent())입니다. 그 형식을 사용하는 개체를 참조하면 컴파일러가 컴파일 시간에 불쾌한 오타를 발견 할 수 있으므로 후자는 항상 선호되어야합니다. 성능 면에서 GetComponent은 비용이 많이 들며 스크립트의 Update 메서드에서 사용하면 게임 속도가 느려집니다. 다른 구성 요소에 자주 액세스해야 하는 경우 가장 좋은 방법은 다른 구성 요소에 액세스하는 것입니다. 많은 Kongregate API 함수(예: 사용자 로그인 이벤트) 및 Kreds 기능은 제대로 작동하려면 콜백을 정의해야 합니다.

Unity에서 이 문제를 처리하려면 SendMessage 메서드를 사용하여 게임을 다시 보내야 합니다. JavaScript API가 로드되면 스크립트가 대신 만드는 글로벌 kongregateUnitySupport 도우미 개체에 전화를 걸 수 있습니다. Unity의 리지드바디는 조사관에게 숨겨져 있는 많은 특성을 가지고 있습니다. 객체는 위치뿐만 아니라 속도, 각도 속도 등을 가지고 있습니다. 스크립트를 사용하여 개체의 위치를 변경하면 이러한 숨겨진 변수에 불일치가 발생할 수 있습니다. 결과적으로 게임의 물리학을 예측할 수 없게 될 수 있습니다. 이는 오브젝트가 이동하는 방식뿐만 아니라 충돌 처리기 호출 방식(예: OnTriggerEnter 또는 OnCollisionEnter)에도 반영됩니다. 게임 오브젝트에 Rigidbody 구성 요소를 연결하면 해당 위치를 망치는 것을 금지하는 계약에 서명하게 됩니다. 이러한 나쁜 선택의 상징적 인 예는 SendMessage 및 BroadcastMessage를 중심으로 구축 된 통신 시스템입니다. 당신이 그들을 사용하는 경우, 당신은 이미 중지해야합니다! API가 초기화되었으므로 JavaScript에 있는 kongregate 개체를 참조하여 Unity 스크립트 내에서 자바스크립트 API 기능을 사용할 수 있습니다.

Contact Info

Citizens for Yarbrough

1001 S. 17th Ave

Maywood, IL

Phone : (708) 344-7062

Email :