Хорошо, после тщательного прочтения документа по Unity и некоторой помощи нашего технического лидера я нашел «достаточно хорошее» решение.
Unity дает вам возможность вызывать функции JS из кода C # для связи сВаша HTML-страница, на которой находится ваш модуль Unity.Мне пришлось создать «фиктивный» класс, который можно сериализовать и просто сохранить имя и координаты моего объекта.
C # код
//We create a class with the Serializable attribute and stock the name and size of our GameObject
[Serializable]
public class SzModel
{
public string modelName;
public Vector3 modelSize;
}
//we have to import our .jslib method into our C# (see below)
[DllImport("__Internal")]
private static extern void UpdateModel(string model);
//We use our dummy class to create a JSON parseable list of those objects
void WallsList()
{
List<SzModel> szModelList = new List<SzModel>();
foreach (var item in goList)
{
SzModel newWall = new SzModel();
newWall.modelName = item.Name;
newWall.modelSize = item.Size;
szModelList.Add(newWall);
}
UpdateModel(JsonHelper.ToJson<SzModel>(szModelList.ToArray(), true));
}
//We create an helper class to be able to use JsonUtility on list
//code can be found here -> https://stackoverflow.com/a/36244111/11013226
После этого нам нужно проинформировать нашу HTML-страницу оновый объект, мы используем метод UpdateModel (), чтобы сделать это.Unity использует файлы .jslib для связи между C # (который преобразуется в код JS во время сборки) и нашим браузером.Таким образом, мы можем объявить функцию в этом файле .jslib.Эти файлы находятся в Asset / Plugins и автоматически конвертируются при сборке.Как вы можете видеть ниже, мы должны использовать метод Pointer_stringify, чтобы получить обратно наши данные json, а не только указатель на них.
.jslib file
mergeInto (LibraryManager.library, {
UpdateModel : function(model){
model = Pointer_stringify(model);
updateModel(model);
},
//rest of code
});
И, наконец, я могу использовать свойДанные json на моей веб-странице, в данном случае для отображения списка названий стен.
function updateModel(model) {
var jsonWallsList = JSON.parse(model);
var wallsList = document.getElementById("wallsSelect"),
option,
i = jsonWallsList.Items.length - 1,
length = jsonWallsList.Items.length;
for (; i < length; i++) {
option = document.createElement('option');
option.setAttribute('value', jsonWallsList.Items.modelName);
option.appendChild(document.createTextNode(jsonWallsList.Items[i]['modelName']));
wallsList.appendChild(option);
}
}
, которые дают следующее при выборе на моей веб-странице