2016-06-10 3 views
-1

Так что я ударил стену в проекте единства, и мне не удалось найти подобную проблему. Я не уверен, как легко описать это, но здесь идет:Unity Prefab Issue

У меня есть сборник. Он предназначен для использования в качестве кнопки (он не может быть кнопкой пользовательского интерфейса по разным причинам). У меня их куча. Каждая кнопка имеет прикрепленный скрипт, так что при нажатии кнопки она отображает текст и некоторые изображения. Однако это не работает.

Чтобы проверить это, я положил несколько из этих кнопок. Я заполнил блок сценариев для двух из них, позвонил им A и B. Они были направлены к тем же элементам пользовательского интерфейса, но каждому из них был предоставлен другой набор изображений для создания. Однако, когда я тестирую его, он вызывает только вызовы из B. Если A является единственным, все кнопки вызывают из A, даже без прикрепленного скрипта.

Мне нужно каким-то образом обновить назначенные начальные «значения» для переменных. Так что он будет тянуть из того, что я назначил им в редакторе, только когда его нажали, а не раньше. Любая помощь или предложения будут оценены.

+0

Пожалуйста, отредактируйте свой вопрос и используйте термины Unity при обращении к различным объектам в среде Unity. Также дайте более подробную информацию о том, какие компоненты содержат ваши сборники, а также код, который у вас есть в ваших сценариях, и как эти сборники включены в эту сцену. – Tayab

+0

Нажмите «Редактировать» и покажите свой сценарий – Fattie

+0

, вы прикрепляете скрипт к кнопкам? или вы прикрепляете сценарии к общим объектам, а затем к кнопкам? –

ответ

0

Пробуйте эту ссылку Instantiating Prefabs с сайта единства.

Возможным решением было бы установить глобальную логическую переменную для каждой кнопки (prefab). Если кнопка 1 активна, установите для переменной значение true, а для кнопок 2 и 3 они превратятся в false для неактивных.

Я предлагаю создать сценарий таким образом для каждой кнопки. После того, как кнопка нажата, обновите значения в переменной для каждой кнопки и снова проверьте эти значения после нажатия кнопки.

0

Вы, кажется, почти там.

public class A : Mono { 
    public ImageToShow Image; // Assign this in inspector 

    void OnMouseDown() { 
     Image.DoYourThing(); // Do whatever you need to here for the image 
    } 
} 

Когда это на многих различных «Prefabs», если вы обращаетесь с Prefabs правильно, каждая кнопка будет иметь свой собственный экземпляр со своей ссылкой на изображение, назначенное внутри инспектора.

https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseDown.html

Ссылка для OnMouseDown.

Каждая кнопка может иметь САМЫЙ сценарий, вы просто должны убедиться, что каждый экземпляр prefab, у вас есть SAVED, имеет правильное изображение, назначенное его скрипту.

Надеюсь, это поможет.

Редактировать: Выполняя это так, каждая кнопка будет «активной», но не сделает ничего, если не постукивает. Если вы нажмете или щелкните неактивный игровой объект (который является вашей кнопкой, потому что он не является элементом GUI), метод на этом объекте не будет вызываться.

+0

Это не работает для него, или я могу неправильно обработать сборные файлы. Я думаю, что проблема заключается в том, что, поскольку все они имеют один и тот же сценарий, последний загружается, тот, который считается «реальным», а его изображения являются официальными для всех. – MechaScoots

+0

Разум подталкивает код, который вы получили до сих пор? – TheNoob