Unity3d(редактор): открытие нескольких файлов с помощью EditorUtility.OpenFilePanel()
Я смотрел этот урок и закончил его, теперь я хочу его расширить.
Я хочу открыть несколько изображений, используя FileExplorer в единстве, а затем иметь возможность показывать изображения на основе значения ползунка, как показано на этом изображении:
https://stackru.com/images/23abe4cebe1727ba9e a2f1bf7a100971608b77d1.png
Любая помощь приветствуется.
1 ответ
Это не отвечает на вопрос, но то, что вы спросили в комментариях
Можете ли вы дать мне небольшой код для "просто создать список и иметь открытые изображения в нем, когда значение ползунка меняется, просто установите спрайт необработанного изображения на спрайт изображения в списке, используя int для получения изображение из списка."?
[RequireComponent(typeof(RawImage))]
public class ImageSwitcher : MonoBehaviour
{
private RawImage image;
public Slider SliderComponent;
// Get the textures somehow
public List<Texture>() textures = new List<Texture>();
private void Awake()
{
image = GetComponent<RawImage>();
if(!SliderComponent)
{
Debug.LogError("No SliderComponent referenced!", this);
return;
}
// Make the slider accept only whole numbers
SliderComponent.wholeNumbers = true;
SliderComponent.value = 0;
SliderComponent.minValue = 0;
// Index is 0 based so can maximal be list count -1
SliderComponent.maxValue = textures.Count - 1;
// Register a listener for onValueChanged
// Remove the listener first to avoid multiple listeners added
SliderComponent.onValueChanged.RemoveListener(OnSliderChanged);
SliderComponent.onValueChanged.AddListener(OnSliderChanged);
}
private void OnDestroy ()
{
// Allways clean up listeners when not needed anymore
SliderComponent.onValueChanged.RemoveListener(OnSliderChanged);
}
// Use this to change the Texture list
// and Max value of the slider afterwards
public void UpdateSlider(List<Texture> textures)
{
// Update the texture list
this.textures = textures;
// Update the max value of the slider
SliderComponent.maxValue = textures.Count - 1;
// Unity might automatically clamp the slider value
// after the maxValue was changed
// But just to be sure we can do it as well
SliderComponent.value = Mathf.Clamp(SliderComponent.value, 0, textures.Count - 1);
}
// Called when the slider value is changed
private void OnSliderChanged()
{
// Get the value as int
int index = (int)SliderComponent.value;
if(index < 0 || index > textures.Count - 1)
{
// Should actually be impossible but just in case log it
Debug.Log("Slider produced impossible index: " + index, this);
return;
}
// Get according texture from list
var texture = textures[index];
// Set texture
image.texture = texture;
}
}
Однако это не полностью решит ваш вопрос
Unity3d(редактор): открытие нескольких файлов с помощью EditorUtility.OpenFilePanel()
как уже упоминалось в этой теме, это невозможно, так как EditorUtility.OpenFilePanel
возвращает только один единственный путь к файлу как string
,
Так что короткий ответ будет: это (в настоящее время) невозможно.
Существует открытый голос за добавление этой функции для нескольких выборов, так что вы можете проголосовать там.
Одной из моих идей будет попытка выбрать путь к папке и загрузить все текстуры из этой папки, но это только обходной путь, а не то, что вы запрашивали.
Но я надеюсь, что остальное поможет вам немного:)