如何在if语句的STRING值之间使用AND运算符

时间:2018-12-13 11:14:22

标签: c# if-statement

我想在[if (hit.transform.gameObject.tag.Equals("object"))]下面的if else语句中添加多个标签,因此如何使用AND运算符添加更多标签:

public class ToolTip : MonoBehaviour {

public RectTransform tooltip;
public Text tooltiptext;
public Vector2 offset;
public LayerMask lm;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
    RaycastHit hit = new RaycastHit();
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    if (Physics.Raycast(ray, out hit, lm))
    {
        if (hit.transform.gameObject.tag.Equals("object"))
        {
        tooltip.gameObject.SetActive(true);
        tooltiptext.text = hit.transform.name;
        tooltip.position = new Vector3(Input.mousePosition.x + offset.x,
            Input.mousePosition.y + offset.y);

    }

    }

    else
    {
        tooltip.gameObject.SetActive(false);
        tooltiptext.text = null;
    }
    }

}

3 个答案:

答案 0 :(得分:1)

我可能会使用Contains方法,因为这样就不必再在if语句中重复hit.transform.gameObject.tag.Equals了:

(new[]{ "object" , "object2" }).Contains(hit.transform.gameObject.tag)

请不要忘记在您的using指令中添加using System.Linq;

答案 1 :(得分:1)

虽然到目前为止的答案都告诉您如何使用AND逻辑运算符&&,但您真正想要的是使用OR逻辑运算符||。由于只能将一个标签分配给对象,因此使用AND进行的比较将始终返回false,如果标签是一个标签或另一个标签(永远不会是两个标签),则您要触发该操作

答案 2 :(得分:0)

使用&&运算符可以添加更多AND语句。例如:

 if ((hit.transform.gameObject.tag.Equals("object")) && (hit.transform.gameObject.tag.Equals("object2")))
 {
        tooltip.gameObject.SetActive(true);
        tooltiptext.text = hit.transform.name;
        tooltip.position = new Vector3(Input.mousePosition.x + offset.x,
            Input.mousePosition.y + offset.y);

  }