Unity3DはUI画像をクリックして、モデルプリセットを生成します
目次
1.ブログ紹介
2年前に前回のデモが判明し、引き渡されました。モデルのプリセットは、ボタンやその他のUI要素をクリックし、マウスで移動することで生成されます。
2.コンテンツ
(1)デモ
(2)生成
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class ClickButton : MonoBehaviour {
public GameObject Cube;
public GameObject Target;
private Button _btnCreate;
void Start () {
_btnCreate = GameObject.Find("Button").GetComponent<Button>();
_btnCreate.AddListener(EventTriggerType.PointerDown,OnDownButton);
}
public void OnDownButton(BaseEventData baseEventData)
{
GameObject cubePre = Instantiate(Cube);
if (Camera.main != null)
{
Vector3 targetSpace = Camera.main.WorldToScreenPoint(Target.transform.position);
cubePre.transform.position= Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, targetSpace.z));
}
}
}
スクリプトを生成するとき、注意すべき唯一のポイントは、マウスの画面座標をワールド座標に変換するときに、Z値がシーン内のオブジェクトを参照値として選択することです。オブジェクトの座標は画面座標に変換する必要があります。 、次に回転したZ値の組み合わせのマウスクリック位置がワールド座標に変換されます。
(3)オブジェクトの動きを生成する
using UnityEngine;
using System.Collections;
public class CubeDragScript : MonoBehaviour {
// Use this for initialization
void Start () {
StartCoroutine(OnMouseDown());
}
IEnumerator OnMouseDown()
{
if (Camera.main != null)
{
//三维物体世界坐标转屏幕坐标
Vector3 screenSpace = Camera.main.WorldToScreenPoint(transform.position);
//完成两个步骤 1.由于鼠标的坐标系是2维,需要转换成3维的世界坐标系
// 2.只有3维坐标情况下才能来计算鼠标位置与物理的距离,offset即是差值
//将鼠标屏幕坐标转为世界三维坐标,转换前的屏幕Z值套用Cube转换过得Z值,再算出Cube世界坐标与鼠标世界坐标的差值
Vector3 offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z));
while (Input.GetMouseButton(0))
{
Camera.main.GetComponent<MouseOrbit>().enabled = false;
//得到现在鼠标的屏幕坐标
Vector3 curScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z);
//物体的位置就是鼠标的世界坐标 + 差值
Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenSpace) + offset;
transform.position = curPosition;
//这个很重要,循环执行
yield return null;
}
}
if (Camera.main != null) Camera.main.GetComponent<MouseOrbit>().enabled = true;
}
}
コメントは非常に明確です。コードを見てください。MouseOrbitスクリプトはレンズの回転を制御します。オブジェクトをドラッグすると無効になります。ブロガーのGithubにジャンプするには、ソースコードとデモシーンが必要です。
3.プッシュ
工程Github:https://github.com/KingSun5/Demo_UICreateObj
4.結論
ブロガーの記事がよく書かれていると思われる場合は、ブロガーに注意を払い、ブログ投稿を気に入ってください。また、ブロガーの能力は限られています。記事に誤りがある場合は、コメントして批判してください。 。
QQ交換グループ:806091680(中国人)
このグループは、CSDNブロガーのChinarによって作成されました。お勧めします。私もグループにいます!
この記事はオリジナル記事ですので、有名作家の出典を転載してトップにこだわってください!!!!