Как загружать ресурсы (текстовые файлы, текстуры и т. Д.) Из встроенного плагина? Я пытаюсь выполнить mono invoke из Resource.Load(), но я не уверен, как обрабатывать объект, который будет возвращен из этой операции (если он будет успешным). Любая помощь будет принята с благодарностью :).Загрузка ресурсов в собственный плагин (Unity)
ответ
Поддерживаемые Unity средства для плагина для загрузки ресурсов непосредственно из собственной файловой системы - это размещение этих ресурсов в папке с именем StreamingAssets внутри вашего проекта. Когда ваше приложение на основе Unity установлено, содержимое этой папки копируется в собственную файловую систему (кроме Android, см. Ниже). Путь к этой папке на родной стороне зависит от каждой платформы.
В Unity V4.x и позже, этот путь доступен как Application.streamingAssetsPath;
Обратите внимание, что на Android файлы, которые вы размещаете в StreamingAssets получить упакованы в файл .jar, хотя они могут быть доступны распаковкой .jar файл.
В Unity v3.x, вам придется вручную построить путь себя следующим образом:
- Все платформы, кроме IOS и Android:
Application.dataPath + "/StreamingAssets"
- прошивкой:
Application.dataPath + "/Raw"
- Android: путь к .jar является:
"jar:file://" + Application.dataPath + "!/assets/"
Вот отрывок я использовал, чтобы справиться с этим:
if (Application.platform == RuntimePlatform.IPhonePlayer) dir = Application.dataPath + "/Raw/";
else if (Application.platform == RuntimePlatform.Android) {
// On Android, we need to unpack the StreamingAssets from the .jar file in which
// they're archived into the native file system.
// Set "filesNeeded" to a list of files you want unpacked.
dir = Application.temporaryCachePath + "/";
foreach (string basename in filesNeeded) {
if (!File.Exists(dir + basename)) {
WWW unpackerWWW = new WWW("jar:file://" + Application.dataPath + "!/assets/" + basename);
while (!unpackerWWW.isDone) { } // This will block in the webplayer.
if (!string.IsNullOrEmpty(unpackerWWW.error)) {
Debug.Log("Error unpacking 'jar:file://" + Application.dataPath + "!/assets/" + basename + "'");
dir = "";
break;
}
File.WriteAllBytes(dir + basename, unpackerWWW.bytes); // 64MB limit on File.WriteAllBytes.
}
}
}
else dir = Application.dataPath + "/StreamingAssets/";
Обратите внимание, что на Android, Android 2.2 и более ранних версиях не удается напрямую распаковать большие .jars (обычно более 1 МБ), поэтому вам придется обрабатывать это как кромку.
Ссылки: http://unity3d.com/support/documentation/Manual/StreamingAssets.html, плюс http://answers.unity3d.com/questions/126578/how-do-i-get-into-my-streamingassets-folder-from-t.html и http://answers.unity3d.com/questions/176129/accessing-game-files-in-xcode-project.html
Спасибо - это немного облегчает мне. :) – hatboyzero
Последняя версия Unity может возвращать путь через http://docs.unity3d.com/Documentation/ScriptReference/Application-streamingAssetsPath.html – ftvs
Спасибо, что вы написали замечательную работу, помогли много. –
Я хочу предложить ответ на этот вопрос в отношении к родной стороне вещей.
IOS
Это довольно просто really- вы можете получить на пути StreamingAssets на родной стороне, как так:
NSString* bundlePath = [[NSBundle mainBundle] bundlePath];
NSString* streamingAssetsPath = [NSString stringWithFormat:@"%@/Data/Raw/", bundlePath];
Android
Я не люблю использовать потоковые активы на Android, это грязное решение, копирующее все файлы об IMO. Более чистый способ сделать это - создать структуры каталогов, определенные в docs в вашем каталоге плагинов.
Так, например, изображение может быть расположено как это в Вашем проекте Unity:
Assets/Plugins/Android/res/drawable/image.png
Затем на Android стороне вы можете получить доступ к идентификатор ресурса это следующим образом:
Context context = (Context)UnityPlayer.currentActivity;
String packageName = context.getPackageName();
int imageResourceId = context.getResources().getIdentifier("image", "drawable", packageName);
До вас, как справиться со всем остальным!Надеюсь, это поможет :)
- 1. Загрузка статических ресурсов в salesforce.com
- 2. Использование ресурсов Папка в Unity
- 3. Загрузка ресурсов в Java
- 4. Плагин Unity android для FCM
- 5. Android Unity плагин
- 6. Создание IOS плагин в Unity
- 7. Плагин ресурсов Grails
- 8. Unity Загрузить текст из ресурсов
- 9. Загрузка фильмов с диска в Unity 5
- 10. Плагин ресурсов ресурсов Grails и облачный фрейм
- 11. WP плагин загрузка изображения
- 12. Сохранение/загрузка данных в Unity
- 13. Загрузка и загрузка ресурсов в Кордове с помощью MFP
- 14. Загрузка XML внутри Unity
- 15. Override мой собственный вход в пакете ресурсов
- 16. Загрузка ресурсов Однажды в Java
- 17. Загрузка встроенных ресурсов в Jmeter
- 18. Загрузка ресурсов в импортированную сборку
- 19. Загрузка ресурсов в метод PostConstruct
- 20. Переопределение Загрузка ресурсов в WebView
- 21. Загрузка файлов ресурсов в банке
- 22. Загрузка файлов ресурсов в Android
- 23. Загрузка внешних ресурсов
- 24. Загрузка ресурсов с require.js
- 25. Загрузка пакетов ресурсов: Spring
- 26. Moodle Создайте собственный плагин аутентификации
- 27. мой собственный 'share it' плагин
- 28. CKeditor собственный плагин с диалогом
- 29. TeamCity Unity плагин: Несовместимые бегун
- 30. Плагин изменения ресурсов для eclipse
Hmh, родной плагин означает платформу, такую как iOS или Android ... Или я неправильно понял? – Kay
Нет, вы читали правильно, но в нем также есть ПК и OSX :) – hatboyzero