是否可以通過使用JavaScript來控制Unity3D插件中的場景? JavaScript代碼應該在瀏覽器的上下文中運行,而不是在Unity3D插件的上下文中運行?我可以使用外部JavaScript控制Unity3D嗎?
我必須在場景中轉換,刪除和添加對象。
也許你有一個例子。
感謝您的任何建議。
是否可以通過使用JavaScript來控制Unity3D插件中的場景? JavaScript代碼應該在瀏覽器的上下文中運行,而不是在Unity3D插件的上下文中運行?我可以使用外部JavaScript控制Unity3D嗎?
我必須在場景中轉換,刪除和添加對象。
也許你有一個例子。
感謝您的任何建議。
是的,這是可能的 - 至少,我知道我已經做到了,但是很久以前。
Here's the demo page我當時放在一起。
隨意查看網頁的源代碼。它大部分來自Unity's docs and examples。我只是做了一個簡單的包裝來發送和接收來自Unity網絡播放器的消息,並修改了一些代碼。
我的代碼基於Prototype.js,因此如果您使用jQuery(如同大多數人一樣),則必須進行一些小的重寫,但它不應該太糟糕。或者你可以使用Unity的預製東西。
我通常不是一個Unity編碼器,所以我不能告訴你如何設置事物的Unity端(我做了基於着色器的簡單演示,但是我已經失去了源代碼文件,我認爲),但我記得,這只是一個用一組公共方法創建遊戲對象的問題。那些方法可以通過JavaScript調用。就那麼簡單。
基本上,從JS端,所有你需要做的是這樣的:
var player = document.getElementById("UnityObject");
player.sendMessage("name of game object", "name of method", "argument");
您還可以發送從一個遊戲物體訊息傳回給JavaScript,如果你想要的。它在演示中不會發生,但它應該可以工作。檢查來源以獲取詳細信息。
如果我在場景中有多個物體,並且有相機移動到場景中的不同物體,該怎麼辦? – 2014-01-14 17:02:18
@KalaJ First:請注意,此信息不是最新的。我不知道API在過去兩年中是否發生了變化。無論如何,只要知道對象的名稱,就可以將消息發送到場景中的任何遊戲對象。但是如果它是非常動態的,我認爲讓1個對象成爲一種控制器會更容易(它不需要以任何方式可見,它只是永遠在那裏)。所以JS只和那個控制器對象通信,然後控制對象的Unity事物。 – Flambino 2014-01-14 17:49:36