Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

214
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!