Unity绘制

 2023-09-18 阅读 12 评论 0

摘要:一、创建空游戏对象 二、创建绘制脚本,并附给新建游戏对象 using System.Collections; using System.Collections.Generic; using UnityEngine;public class NewBehaviourScript : MonoBehaviour {//记录顶点数组private Vector3[] vertices;//三角形索引private int[]

一、创建空游戏对象

二、创建绘制脚本,并附给新建游戏对象

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class NewBehaviourScript : MonoBehaviour
{//记录顶点数组private Vector3[] vertices;//三角形索引private int[] triangles;//记录顶点数private int count;private Mesh mesh;private List<Vector3> list;// Start is called before the first frame updatevoid Start(){//添加MeshFiltergameObject.AddComponent<MeshFilter>();//添加MeshRenderergameObject.AddComponent<MeshRenderer>();//new一个链表list = new List<Vector3>();//获得Meshmesh = GetComponent<MeshFilter>().mesh;//修改Material的颜色GetComponent<MeshRenderer>().material.color = Color.green;//选择材质的shader//  GetComponent<MeshRenderer>().material.shader = Shander.Find("Transparent/Diffuse");//清空所有点用于初始化mesh.Clear();}// Update is called once per framevoid Update(){//点击鼠标左键if (Input.GetMouseButton(0)){//顶点数+1count++;//将鼠标点击的屏幕坐标转换为世界坐标,添加到list链表中list.Add(Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0.8f)));}//如果顶点数>=3 开始渲染if(count >= 3){//初始化顶点数组vertices = new Vector3[count];//将list坐标赋值给顶点坐标数组for(int i = 0; i < count; i++){vertices[i] = list[i];}//三角形网格数int trangle_count = count - 2;//三角形索引triangles = new int[3 * trangle_count];for(int i =0;i< trangle_count; i++){triangles[3 * i] = 0;triangles[3 * i + 1] = i + 2;triangles[3 * i + 2] = i + 1;}//设置顶点坐标mesh.vertices = vertices;mesh.triangles = triangles;}}
}

效果如下:
在这里插入图片描述

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/72674.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息