我想在[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;
}
}
}
答案 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);
}