Unity3D haga clic en la imagen de la interfaz de usuario para generar los ajustes preestablecidos del modelo

                        Unity3D haga clic en la imagen de la interfaz de usuario para generar los ajustes preestablecidos del modelo


Tabla de contenido

1. Introducción al blog

2. Contenido

(1) Demostración

(2) Generación

(3) Generar movimiento de objetos

 3. Empuje

4. Conclusión


1. Introducción al blog

Resultó la demostración anterior hace dos años, y se entregó. Los ajustes preestablecidos del modelo se generan haciendo clic en botones u otros elementos de la interfaz de usuario y moviéndose con el mouse.


2. Contenido

(1) Demostración

(2) Generación

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

Al generar el script, el único punto a tener en cuenta es que cuando las coordenadas de la pantalla del mouse se convierten a coordenadas mundiales, el valor Z selecciona un objeto en la escena como valor de referencia. Las coordenadas del objeto deben convertirse a coordenadas de pantalla , y luego el Z girado. La combinación de valores de posición del clic del mouse se convierte en coordenadas mundiales.

(3) Generar movimiento de objetos

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



}

Los comentarios son muy claros. Solo mira el código. El script MouseOrbit controla la rotación de la lente. Se deshabilita al arrastrar el objeto. El código fuente y la escena de demostración son necesarios para saltar al blogger Github.


 3. Empuje

工程 Github :https://github.com/KingSun5/Demo_UICreateObj


4. Conclusión

       Si crees que el artículo del blogger está bien escrito, es posible que desees prestar atención al blogger y dar me gusta a la publicación del blog. Además, la capacidad del blogger es limitada. Si hay algún error en el artículo, comenta y critica. .

       Grupo de intercambio QQ: 806091680 (Chinar)

       Este grupo fue creado por el blogger de CSDN Chinar, ¡lo recomiendo! ¡Yo también estoy en el grupo!

       Este artículo es un artículo original, por favor vuelva a imprimir la fuente del famoso autor y manténgase en la parte superior. ! ! !

Supongo que te gusta

Origin blog.csdn.net/Mr_Sun88/article/details/94507384
Recomendado
Clasificación