框选人物的例子+改变鼠标图标(类似红警)

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);


以上是关于框选人物的例子+改变鼠标图标(类似红警)的主要内容,如果未能解决你的问题,请参考以下文章

HWND 鼠标悬停时改变光标

win10中,类似uwp的图标可以在哪里找到?

鼠标停留在文字上 出现一个悬浮框!!

css 如何改变鼠标图标

WPF程序里,有一个ListView,想要在其中拖动鼠标,生成一个矩形框,并选中矩形框中的item元素,该怎么做

红警shp点阵文件怎样编辑