制作思路:
1.首先需要一个空物体进行值传递; 当你移动物体时另一个物体的位置时没有变化的,然后通过if语句来判断两个物体的位置是否相同,不相同就把移动物体的值传递给空物体,然后将值保存到list里。也就是说我每一次移动都有一个位置生成并保存至list里面。但是物体没有移动的值没有放在list里 然后我们在进行当list 的长度为0时的判断就可以实现目标;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class ch : MonoBehaviour
{
private Vector3 sc;
private Vector3 offsey;
public GameObject Cube;
public GameObject moni;
List<Vector3> number = new List<Vector3>();
// Start is called before the first frame update
void Start()
{
// moni.transform.position = Cube.transform.position;//让物体与空物体的值相同
if (number == null)//初始化列表
{
number = new List<Vector3>();
}
if (moni.transform.position != Cube.transform.position)
{
moni.transform.position = Cube.transform.position;
}
number.Add(Cube.transform.position);
Debug.Log(number.Last());
}
// Update is called once per frame
void Update()
{
}
void OnMouseUp()
{
if (moni.transform.position != Cube.transform.position)
{
moni.transform.position = Cube.transform.position;
}
number.Add(Cube.transform.position);
Debug.Log(number.Last());
}
public void onchchehui_button()
{
if (number.Count == 0)
{
Cube.transform.position = new Vector3(419, 261, -45);
}
if(number.Count >1) {
number.Remove(number.Last());
Cube.transform.position = number.Last();
Debug.Log(number.Last());
Debug.Log(number.Count());
}
//number.Remove(number.Last());
//Cube.transform.position = number.Last();
//Debug.Log(number.Last());
//Debug.Log(number.Count());
}
void OnMouseDown()
{
sc = Camera.main.WorldToScreenPoint(transform.position);//获取物体的屏幕坐标
offsey = sc - Input.mousePosition;//获取物体与鼠标在屏幕上的偏移量
}
void OnMouseDrag()
{
transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition + offsey);//将拖拽后的物体屏幕上坐标还原
}
}
具体代码如下: