框选人物的例子+改变鼠标图标(类似红警)
Posted zanzz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了框选人物的例子+改变鼠标图标(类似红警)相关的知识,希望对你有一定的参考价值。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SetBox : MonoBehaviour
//这个是换鼠标图标
public Texture2D tex1, tex2;
RectTransform rectTransform;
Rect rect;
Transform playerBox;
Vector3 startPos, endPos;
Ray ray;
//被选择的人物集合
List<GameObject> selects = new List<GameObject>();
void Start()
//找到组件
rectTransform = GetComponent<RectTransform>();
//找到存储物品的盒子
playerBox = GameObject.Find("playerBox").transform;
// Update is called once per frame
void Update()
//记录鼠标左键按下时候的位置
if(Input.GetMouseButtonDown(0))
startPos = Input.mousePosition;
//鼠标左键按住
if (Input.GetMouseButton(0))
endPos = Input.mousePosition;
Vector3 centerPos = (startPos + endPos) / 2;
Vector3 localSize = new Vector2(Mathf.Abs(endPos.x - startPos.x), Mathf.Abs(endPos.y - startPos.y));
rectTransform.position = centerPos;
rectTransform.sizeDelta = localSize;
rect = new Rect(centerPos - localSize / 2, localSize);
//鼠标左键抬起
if(Input.GetMouseButtonUp(0))
foreach (var item in selects)
//item.transform.Find("lightRing").gameObject.SetActive(false);
//玩家移动脚本
//item.transform.GetComponent<PlayerMove>().enabled = false;
//清理集合
selects.Clear();
for (int i = 0; i < playerBox.childCount; i++)
Vector3 screenPos = Camera.main.WorldToScreenPoint(playerBox.GetChild(i).transform.position);
if (rect.Contains(screenPos))
selects.Add(playerBox.GetChild(i).gameObject);
//脚底的光圈
//playerBox.GetChild(i).transform.Find("lightRing").gameObject.SetActive(true);
//playerBox.GetChild(i).transform.GetComponent<PlayerMove>().enabled = true;
else
//playerBox.GetChild(i).transform.GetComponent<PlayerMove>().enabled = false;
//playerBox.GetChild(i).transform.Find("lightRing").gameObject.SetActive(false);
rectTransform.sizeDelta = Vector2.zero;
if (selects.Count > 0)
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (selects.Count > 0 && Physics.Raycast(ray, out RaycastHit hit, 1000, 1 << 7))
Cursor.SetCursor(tex1,Vector2.zero, CursorMode.Auto);
else
Cursor.SetCursor(tex2, Vector2.zero, CursorMode.Auto);
本文来自博客园,作者:old_Host,转载请注明原文链接:https://www.cnblogs.com/zanzz/p/17217492.html
以上是关于框选人物的例子+改变鼠标图标(类似红警)的主要内容,如果未能解决你的问题,请参考以下文章