找回密码
 立即注册
查看: 3158|回复: 30

[简易教程] mesh和sharedMesh的区别

[复制链接]
发表于 2018-8-31 15:07 | 显示全部楼层 |阅读模式

代码:

  1. using UnityEngine;
  2. using System.Collections;

  3. public class NewBehaviourScript : MonoBehaviour
  4. {
  5.     public Transform cube1;
  6.     public Transform cube2;
  7.     public Transform a1;
  8.     public Transform a2;
  9.     public Transform a3;

  10.     void Start()
  11.     {
  12.         if (cube1.GetComponent<MeshFilter>().sharedMesh == cube2.GetComponent<MeshFilter>().sharedMesh)
  13.         {
  14.             Debug.LogError("mesh is the same!");
  15.         }
  16.         ChangeCube1Mesh();
  17.     }

  18.     void ChangeCube1Mesh()
  19.     {
  20.         Mesh mesh = cube1.GetComponent<MeshFilter>().mesh; //这里是mesh
  21.         mesh.Clear();
  22.         Vector3 v1 = gameObject.transform.InverseTransformPoint(a1.position);
  23.         Vector3 v2 = gameObject.transform.InverseTransformPoint(a2.position);
  24.         Vector3 v3 = gameObject.transform.InverseTransformPoint(a3.position);
  25.         mesh.vertices = new Vector3[] { v1, v2, v3 };
  26.         mesh.triangles = new int[] { 0, 1, 2 };
  27.     }
  28. }
复制代码

上面如果改变的是cube1的mesh,则效果只是改变cube1的mesh:

如果改为:

  1. void ChangeCube1Mesh()
  2.     {
  3.         Mesh mesh = cube1.GetComponent<MeshFilter>().sharedMesh; //这里是sharedMesh
  4.         mesh.Clear();
  5.         Vector3 v1 = gameObject.transform.InverseTransformPoint(a1.position);
  6.         Vector3 v2 = gameObject.transform.InverseTransformPoint(a2.position);
  7.         Vector3 v3 = gameObject.transform.InverseTransformPoint(a3.position);
  8.         mesh.vertices = new Vector3[] { v1, v2, v3 };
  9.         mesh.triangles = new int[] { 0, 1, 2 };
  10.     }
复制代码

可见sharedMesh是公用的,是引用传递。而mesh是值传递,是各自拥有的实例。sharedMesh改变,则所有的使用到此mesh的都改变。


发表于 2018-9-17 08:14 | 显示全部楼层
好帖就是要顶
发表于 2018-9-17 08:06 | 显示全部楼层
真心顶
发表于 2018-9-17 07:41 | 显示全部楼层
说的非常好
发表于 2018-9-17 08:27 | 显示全部楼层
很好哦
发表于 2018-9-17 08:11 | 显示全部楼层
不错不错
发表于 2019-1-15 08:37 | 显示全部楼层
很不错
发表于 2019-1-15 09:18 | 显示全部楼层
好帖就是要顶
发表于 2019-1-15 08:21 | 显示全部楼层
真心顶
发表于 2019-1-15 08:36 | 显示全部楼层
难得一见的好帖
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-21 00:42 , Processed in 0.098050 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表