分享

关于Unity 获得和使用GetComponent<MeshFilter>().mesh时的心得

 Steven书房 2014-01-09

今天在使用Unity3D的时候遇到了一个问题:_tesGameObject是在Project中的一个Prefab。

    public GameObject _testGameObject;
    void Awake()
    {
        Mesh mesh=_testGameObject.GetComponent<MeshFilter>().mesh;
        Debug.Log(mesh.bounds.size);
    }
这样使用的时候会导致将Prefab的Mesh给去掉了。所以第一次使用的时候好使。如果再次执行的时候就会遇到Prefab中的Mesh为Null了。不知道是Unity3D的一个Bug还是自己理解有误。反正感觉就是Prefab的一些属性不能直接读取,需要实例化之后才能正常读取
最后:解决方法是:
 public GameObject _testGameObject;
  void Awake()
    {
        GameObject gameInstance = (GameObject)Instantiate(_testGameObject);
        gameInstance.transform.position = Vector3.zero;
        gameInstance.name = _testGameObject.name;
        Mesh mesh=gameInstance.GetComponent<MeshFilter>().mesh;
        Debug.Log(mesh.name);
        Debug.Log(mesh.bounds.size);
    }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多