• 大小: 2.45MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-10
  • 语言: 其他
  • 标签: Unity  UI  perfabs  

资源简介

当我们做一些农场游戏或者类似可编辑战场类游戏时经常会遇到从UI上拖动物体在3D场景里生成,要实现这种从UI上拖物体的效果其实挺简单,代码不复杂,主要是想法很重要,一个优秀的程序员不只是技术扎实,更重要的是要多思考,不思考的程序员只是一个码农。

资源截图

代码片段和文件信息

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Dragobject : MonoBehaviour {
//只针对指定的层级进行拖动
public layerMask _draglayerMask;
//指定当前要拖动的对象
public Transform currentTransform;
//是否可以拖动当前对象
public bool isDrag = false;
//用于存储当前需要拖动的对象在屏幕空间中的坐标
Vector3 screenPos = Vector3.zero;
//当前需要拖动对象的坐标相对于鼠标在世界空间坐标中的偏移量
Vector3 offset = Vector3.zero;
void Update () {

if (Input.GetMouseButtonDown (0)) {
//将鼠标输入点转化为一条射线
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit hitinfo;
//如果当前对象与指定的层级发生碰撞,表示当前对象可以被拖动
if (Physics.Raycast (ray out hitinfo 1000f _draglayerMask)) {
isDrag = true;
//将当前需要拖动的对象赋值为射线碰撞到的对象
currentTransform = hitinfo.transform;
//将当前对象的世界坐标转化为屏幕坐标
screenPos = Camera.main.WorldToScreenPoint (currentTransform.position);
//将鼠标的屏幕坐标转换为世界空间坐标,再与当前要拖动的对象计算两者的偏移量
offset = currentTransform.position - Camera.main.ScreenToWorldPoint (new Vector3 (Input.mousePosition.x Input.mousePosition.y screenPos.z));
} else {
isDrag = false;
}
}
if (Input.GetMouseButton (0)) {
if (isDrag == true) {

var currentScreenPos = new Vector3 (Input.mousePosition.x Input.mousePosition.y screenPos.z);
//鼠标的屏幕空间坐标转化为世界坐标,并加上偏移量
var currentPos = Camera.main.ScreenToWorldPoint (currentScreenPos) + offset;
currentTransform.position = currentPos;
}
}
if (Input.GetMouseButtonUp (0)) {
isDrag = false;
currentTransform = null;
}
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-07-31 07:41  Placeobject-master\
     目录           0  2018-07-31 07:41  Placeobject-master\.vscode\
     文件        1347  2018-07-31 07:41  Placeobject-master\.vscode\settings.json
     文件        7207  2018-07-31 07:41  Placeobject-master\Assembly-CSharp.csproj
     目录           0  2018-07-31 07:41  Placeobject-master\Assets\
     文件         213  2018-07-31 07:41  Placeobject-master\Assets\Material.meta
     目录           0  2018-07-31 07:41  Placeobject-master\Assets\Material\
     文件        2019  2018-07-31 07:41  Placeobject-master\Assets\Material\Blue.mat
     文件         229  2018-07-31 07:41  Placeobject-master\Assets\Material\Blue.mat.meta
     文件        2012  2018-07-31 07:41  Placeobject-master\Assets\Material\Green.mat
     文件         229  2018-07-31 07:41  Placeobject-master\Assets\Material\Green.mat.meta
     文件        1991  2018-07-31 07:41  Placeobject-master\Assets\Material\Red.mat
     文件         229  2018-07-31 07:41  Placeobject-master\Assets\Material\Red.mat.meta
     文件        2019  2018-07-31 07:41  Placeobject-master\Assets\Material\color.mat
     文件         229  2018-07-31 07:41  Placeobject-master\Assets\Material\color.mat.meta
     文件         213  2018-07-31 07:41  Placeobject-master\Assets\Prefabs.meta
     目录           0  2018-07-31 07:41  Placeobject-master\Assets\Prefabs\
     文件        2718  2018-07-31 07:41  Placeobject-master\Assets\Prefabs\Capsule.prefab
     文件         231  2018-07-31 07:41  Placeobject-master\Assets\Prefabs\Capsule.prefab.meta
     文件        2709  2018-07-31 07:41  Placeobject-master\Assets\Prefabs\Cube.prefab
     文件         231  2018-07-31 07:41  Placeobject-master\Assets\Prefabs\Cube.prefab.meta
     文件        2704  2018-07-31 07:41  Placeobject-master\Assets\Prefabs\Sphere.prefab
     文件         231  2018-07-31 07:41  Placeobject-master\Assets\Prefabs\Sphere.prefab.meta
     文件         213  2018-07-31 07:41  Placeobject-master\Assets\RenderTexture.meta
     目录           0  2018-07-31 07:41  Placeobject-master\Assets\RenderTexture\
     文件         679  2018-07-31 07:41  Placeobject-master\Assets\RenderTexture\capsule.renderTexture
     文件         229  2018-07-31 07:41  Placeobject-master\Assets\RenderTexture\capsule.renderTexture.meta
     文件         676  2018-07-31 07:41  Placeobject-master\Assets\RenderTexture\cube.renderTexture
     文件         229  2018-07-31 07:41  Placeobject-master\Assets\RenderTexture\cube.renderTexture.meta
     文件         678  2018-07-31 07:41  Placeobject-master\Assets\RenderTexture\sphere.renderTexture
     文件         229  2018-07-31 07:41  Placeobject-master\Assets\RenderTexture\sphere.renderTexture.meta
............此处省略533个文件信息

评论

共有 条评论