Как выбрать и отменить выбор в игре кроссворд - PullRequest
0 голосов
/ 13 января 2019

Итак, я играю в кроссворд в Unity Engine, и когда я выбираю (левой кнопкой мыши) слово, белые плитки должны стать зелеными (что происходит), но когда я перестаю удерживать левую кнопку мыши, он не становится белым снова, как вы видите на отпечатке here is the print i told you

И код здесь:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using System; 

public class Selecionar : MonoBehaviour, ISelectHandler, IPointerClickHandler, IDeselectHandler {

private int acertos;
public static HashSet<Selecionar> todosMeusSelecionaveis = new HashSet<Selecionar>();
public static HashSet<Selecionar> selecionado = new HashSet<Selecionar>();

Renderer myRenderer;

[SerializeField]
Material materialNaoSelecionado;
[SerializeField]
Material materialSelecionado;


void Awake()
{
    todosMeusSelecionaveis.Add(this);
    myRenderer = GetComponent<Renderer>();
}

public void OnDeselect(BaseEventData eventData)
{
    myRenderer.material = materialNaoSelecionado;
}

public void OnPointerClick(PointerEventData eventData)
{
    if(Input.GetKeyDown(KeyCode.Mouse0)){
        DeselectAll(eventData);
    }
    OnSelect(eventData);
}

public void OnSelect(BaseEventData eventData)
{
    selecionado.Add(this);
    myRenderer.material = materialSelecionado;
}
public static void DeselectAll (BaseEventData eventData){
    foreach (Selecionar selecionavel in selecionado)
    {
        selecionavel.OnDeselect(eventData);
    }
    selecionado.Clear();
  }


}

1 Ответ

0 голосов
/ 13 января 2019

Я думаю, вы должны return внутри оператора if для OnPointerClick. Когда он входит, он выполняет DeselectAll, а затем OnSelect.

Либо сделать:

public void OnPointerClick(PointerEventData eventData)
{
    if(Input.GetKeyDown(KeyCode.Mouse0)){
        DeselectAll(eventData);
        return; // <----
    }
    OnSelect(eventData);
}

или

public void OnPointerClick(PointerEventData eventData)
{
    if(Input.GetKeyDown(KeyCode.Mouse0)){
        DeselectAll(eventData);
    } else {
        OnSelect(eventData);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...