永发信息网

以下unity3d的C#代码是什么意思?

答案:2  悬赏:10  手机版
解决时间 2021-02-25 06:15
Mesh NewMesh(GameObject g)
{
MeshFilter mf = g.GetComponent(); //网过滤器的网格

Vector2 _meshsize_ = new Vector2(1, 1); //代表2D向量和点
Mesh mesh = new Mesh();//网孔
mesh.vertices = new Vector3[] {
new Vector3(((_meshsize_.x/2) * -1), (_meshsize_.y/2) , 0),
new Vector3((_meshsize_.x/2) , (_meshsize_.y/2), 0),
new Vector3((_meshsize_.x/2) , ((_meshsize_.y/2) * -1), 0),
new Vector3(((_meshsize_.x/2) * -1) , ((_meshsize_.y/2) * -1), 0)
};
mesh.triangles = new int[] {
0,1,2,2,3,0
};

Vector2[] meshUV = new Vector2[] {
new Vector2(1,0), new Vector2(0,0),
new Vector2(0,1), new Vector2(1,1) };

mesh.uv = meshUV;
mesh.RecalculateBounds();
mesh.RecalculateNormals();

mf.mesh = mesh;

return mesh;
}
最佳答案
//创建一个网格
Mesh NewMesh(GameObject g)
{
//获得该物体的网格过滤器
MeshFilter mf = g.GetComponent(); //网过滤器的网格
//新建二维向量(1,1)
Vector2 _meshsize_ = new Vector2(1, 1); //代表2D向量和点
Mesh mesh = new Mesh();//新建网格
//新建点数组分别为物体g的相对位置(+/-0.5,+/-0.5,0)
mesh.vertices = new Vector3[] {
new Vector3(((_meshsize_.x/2) * -1), (_meshsize_.y/2) , 0),
new Vector3((_meshsize_.x/2) , (_meshsize_.y/2), 0),
new Vector3((_meshsize_.x/2) , ((_meshsize_.y/2) * -1), 0),
new Vector3(((_meshsize_.x/2) * -1) , ((_meshsize_.y/2) * -1), 0)
};
//新建三角形数组,在mesh中解读方式为三个一组,代表三角形三点
//0,1,2代表一个三角形,2,3,0代表另一个三角形,其中0,1,2......代表该mesh的点(vertices)数组的下标序号
mesh.triangles = new int[] {
0,1,2,2,3,0
};
//物体网格对应贴图的UV坐标
Vector2[] meshUV = new Vector2[] {
new Vector2(1,0), new Vector2(0,0),
new Vector2(0,1), new Vector2(1,1) };
//赋予mesh自己的UV数组
mesh.uv = meshUV;
//重新计算网格和数组,但一般来说RecalculateBounds();方法应该放在 mesh.RecalculateNormals();之后
mesh.RecalculateBounds();
mesh.RecalculateNormals();

mf.mesh = mesh;

return mesh;
}
//概括来说就是输入一个物体,然后将其网格换成一个1X1的平面正方形
全部回答
//p.s.函数太长参数隐秘,分太少,这条至少30分才有正常人回答 //函数作用:在纹理上绘制自定义多线 void draw(vector2 point)//画画 { //输入点在纹理上的像素值(参数没给全,我就估计一下,请理解为输入点的参数乘以某个常数) int px = (int)((point.x / transform.localscale.x) * texwidth); int py = (int)((point.y / transform.localscale.y) * texheight); //根据信息生成一个像素点 point = new vector2(px, py); //如果有上一个点 if (hasprevious) { //上一个点投影的像素值 int x = (int)previouspoint.x; int y = (int)previouspoint.y; //计算上一个点和现在的点纵横像素差距 int dx = (int)mathf.abs(point.x - x); int dy = (int)mathf.abs(point.y - y); //sx,sy两个点方向有关 int sx = -1; if (x < point.x) sx = 1; int sy = -1; if (y < point.y) sy = 1; // 不明觉厉的参数 if (brushsize > 40) { sx *= brushsize / 10; sy *= brushsize / 10; } //纵横距离只差,根据此参数绘点 int err = dx - dy; while (true) { //画一个点,估计记录在colors32draw数组中 drawpoint(new vector2(x,y)); //如果画的点与前一个点像素相同,停止,如果不是,在两点之间的画点 if (x == (int)point.x && y == (int)point.y) break; int e2 = 2 * err; if (e2 > -dy) { err -= dy; x += sx; if ((sx > 0 && x > (int)point.x) || (sx < 0 && x < (int)point.x)) x = (int)point.x; } if (e2 < dx ) { err += dx; y += sy; if ((sy > 0 && y > (int)point.y) || (sy < 0 && y < (int)point.y)) y = (int)point.y; } } } else drawpoint(point); //应用纹理上 texture2d tex = bd.renderer.material.maintexture as texture2d; tex.setpixels32(colors32draw); tex.apply(); hasprevious = true; previouspoint = point; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
曲靖市中国移动68元套餐介绍,其中都包涵什么
牛黄与银子相交为什么会变黑
我的oppoa3i手机更新了一下死机了
资阳大堰生态农业有限责任公司在什么地方啊,
沙和尚在西游记中是否多余原因是啥
什么墨水不堵笔
小蛤蟆川村村在哪里啊,我有事要去这个地方
怎样发现我的手机号被人注册徽信号
崩坏3以绯红为核心的队伍搭配
在哪可以购买到雅芳
别人问你的兴趣和爱好怎么回答
栾的连笔字怎么
恒诚空心砖厂地址有知道的么?有点事想过去
什么是个别语言学?什么是普通语言学?二者的
请问林蛙干里的黑色籽可以吃吗?怎么吃?另外扒
推荐资讯
想提高英语口语,有好的提议吗
好易饰材地址在哪,我要去那里办事
张利书法艺术工作室地址在什么地方,想过去办
中通快递运单号是12位为什么运单写的是13位呢
本人在北京昌平区立汤路附近,跪求临近的旱冰
现在初三,我不想上高中了,怎么办??(意)
开个买文化用品和小食品店需要办哪些手续
两个月的宝宝,肚子胀气,消化不良.哭闹该怎
阅读下面的汇率表.这种汇率变化将会
昂克赛拉与阿特兹机滤一样吗
oracle 查询函数怎么返回查询结果
钣金喷漆干了一年工资应该多少
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?