zoukankan      html  css  js  c++  java
  • Unity中的Transform.SetParent()API

    通常我们所用的SetParent是不带第二个参数的。

    但是世界坐标系中的物体在与UGUI相结合使用时,往往会出现问题,这个问题基本上都出自于SetParent()的第二个参数。

    首先看一个基础列子:

    一个空的GameObject的Transform值:

    一个Cube的Transform值:

    他们的关系:

    Game视图:

    我们直接在Hierarchy面板中拖动Cube到空物体下,让t他成为空物体的子物体。

    然后在Game视图中可以发现,Cube基本没有变化,而Transform值改变。

    Cube的transform值:

    刚才在面板中的操作相当于在代码中的操作Cube.SetParent(GameObject.transform)。(可以去试试)

    所以,通俗一点来讲当SetParent方法只有第一个参数,或者第二个参数为true时,

    物体的transform值会根据父物体的transform值做相应的改变,使物体在没有设置父物体前在世界坐标系中的大小旋转位置和设置父物体后在世界坐标系中的位置旋转大小一致。

    当我们将cube拖出来,添加脚本

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class NewBehaviourScript1 : MonoBehaviour {

    public Transform parentTransform;

    void Start () {
    transform.SetParent(parentTransform, false);
    }

    /*private void Start()
    {
    transform.SetParent(parentTransform, true);
    }*/

    }
    然后在Unity中发现:

    Game视图:

    Cube的transform值:

    所以通俗一点来讲,当第二个参数为false的时候。

    物体的transform不会根据当前设置的父物体的transform的值所改变,也就是transform值不变。

    这样Cube在设置父物体前后就会有所改变了。

  • 相关阅读:
    外部晶振的使用原因与内部RC振荡器的使用方法
    Linux系统下ifconfig命令使用及结果分析
    浅谈程序的内存布局
    物理内存与虚拟内存之间的映射
    如何正确理解套接字
    研究自动驾驶技术的算法需要哪些知识?
    如何防止头文件被重复包含或引用?
    虚拟机-VMware小结-汇总
    局域网内快速传输数据
    thingsboard安装
  • 原文地址:https://www.cnblogs.com/Dearmyh/p/10000058.html
Copyright © 2011-2022 走看看