Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

228
Visualizações
cómo usar los botones de la interfaz de usuario de inventario por enumeraciones

Intentaré explicar mi problema. Necesito hacer para mi proyecto escolar una sala de escape 2D simple. Tengo la mayoría de los scripts listos, cuando hago clic en un elemento, lo agrega a la lista de inventario y luego puedo verlo en mi barra de inventario. El problema es que quiero que los botones del inventario de la barra de interfaz de usuario, después de hacer clic en el elemento, sepan en qué elemento he estado haciendo clic. la forma en que lo hice funcionó a medias porque él siempre da el elemento clave. Tengo interfaz de máquina de estado. esa herencia a 2 scripts más (que abren o cierran las otras cosas interactivas (cajón de la puerta). Obtuve el script KeyItems y el Interactable Script y UImanager - Singleton. ¿Existe de manera genérica? Este es el PlayerCast Script que agrego los elementos Hice clic en el inventario, pensé que el botón tenía que estar aquí.

 public enum item {none , paperclip , key } public class PlayerCast : MonoBehaviour { public Camera cam; public List<item> inventory; public item activeItem; private void Start() { inventory = new List<item>(); } // Update is called once per frame void Update() { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Input.GetMouseButtonDown(0)) { if (Physics.Raycast(ray, out hit)) { if (hit.collider.CompareTag("Interact")) { Interactable interactable = hit.collider.gameObject.GetComponent<Interactable>(); interactable.CLickMe(activeItem); } else if(hit.collider.CompareTag("Key")) { KeyItems hitItem = hit.collider.gameObject.GetComponent<KeyItems>(); hitItem.PickMeUp(); } } } } public void ButtonSelect() //this is the generic button im trying to do { this.activeItem = item.key; Debug.Log("Clicked"); }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Necesitas evento.

 public enum ItemTypes { None , Paperclip , Key } [DisallowMultipleComponent] public class Foo : MonoBehaviour { // Action its void delegate public event System.Action<ItemTypes> Selected; public ItemTypes ActiveItem { get; private set; }; // property public void ButtonSelect () { ActiveItem = ItemTypes.Key; Selected?.Invoke(ActiveItem); // invoke event } }

 [DisallowMultipleComponent] public class YourUIBar : MonoBehaviour { [SerializeField] private Foo _foo; // link on inspector private void OnEnable () { ItemChange(Foo.ActiveItem); // setup current Foo.Selected += ItemChange; // subscribe to event } private void OnDisable () { Foo.Selected -= ItemChange; } private void ItemChange (ItemTypes item) { // your code } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda