【Unity】Transform—用代码设置父子关系
1.获取和设置父对象
子对象在世界坐标系下的位置是加法运算:子对象在世界坐标系下的位置 = 子对象的位置 + 父对象的位置
子对象在世界坐标系下的缩放是乘法运算:子对象在世界坐标系下的位置 = 子对象的位置 + 父对象的位置
现有:
Lesson9脚本中的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson9 : MonoBehaviour
{void Start(){//获取父对象//可以通过Transform 获取我自己的父对象是谁print(this.transform.parent.name);//设置父对象//1.断绝父子关系this.transform.parent = null;//2.找个新父亲(需要赋值一个对象的transform)this.transform.parent = GameObject.Find("Father2").transform;//3.通过API来进行父子关系的设置//参数1 父对象的Transform//参数2 是否保留本对象在世界坐标系下的位置、角度、缩放信息// 如果填true,则会保留世界坐标系下的状态和父对象进行计算 得出想对父对象的本地坐标系的信息// 如果填false,则不会进行计算,直接把在世界坐标系下的信息 赋值到在本地坐标系中this.transform.SetParent(GameObject.Find("Father2").transform, true);}
}
运行:
2.抛弃所有子对象
现有:
Lesson9脚本的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson9 : MonoBehaviour
{void Start(){//与自己的所有子对象 断绝关系this.transform.DetachChildren();}
}
运行:
3.获取子对象
现有:
Lesson9脚本的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Lesson9 : MonoBehaviour
{void Start(){//1.按名字查找儿子// 返回一个儿子的transform信息// 只能找儿子,找不了孙子// transform.Find能找到失活的儿子,而GameObject相关的查找 是找不到失活对象的print(this.transform.Find("Son2").name);//2.得到有多少个儿子(失活的儿子也算,孙子不算)print(this.transform.childCount);//3.通过索引,去得到自己对应的儿子// 返回值是transform,可以得到对应的儿子位置相关信息// 注意 索引越界会报错this.transform.GetChild(0);//4.遍历儿子for (int i = 0; i < this.transform.childCount; i++){print(this.transform.GetChild(i).name);}}
}
运行:
4.儿子的操作
现有:
Lesson9脚本的代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson9 : MonoBehaviour
{//要进行以下操作的儿子public Transform son;void Start(){//1.判断传入的这个对象是不是自己父亲if (son.IsChildOf(this.transform)){print("传入的这个对象是我父亲");}//2.得到自己作为儿子的编号print(son.GetSiblingIndex()); //将会打印 0//3.把自己设置成第一个儿子son.SetAsFirstSibling();//4.把自己设置成最后一个儿子son.SetAsLastSibling();//5.把自己设置为指定个儿子// 索引越界也不会报错,而是直接把它设置到最后一个son.SetSiblingIndex(1);}
}
【Unity】Transform—用代码设置父子关系相关推荐
- 使用 SetParent 跨进程设置父子窗口时的一些问题(小心卡死)
在微软的官方文档中,说 SetParent 可以在进程内设置,也可以跨进程设置.当使用跨进程设置窗口的父子关系时,你需要注意本文提到的一些问题,避免踩坑. 本文内容 跨进程设置 `SetParent` ...
- Unity学习日志_Unity父子关系与Camera
Unity学习日志_Unity父子关系与Camera 本次组件简单介绍将不包含monoBehaviour类及其向上回溯的父类. 1. 关于父子物体 首先需要声明的一点是所有游戏物体的Trans ...
- Unity子物体脱离父物体,解除父子关系,子物体不随父物体移动
在Unity中创建一个手雷,并且需求是扔出手雷时,手雷不能跟随人物移动 这个需要调用 gameObject.transform.DetachChildren方法,将GrenadePosition下的所 ...
- Unity:计算两个物体(没有父子关系)的相对坐标
Unity:计算两个物体(没有父子关系)的相对坐标 问题描述 实现方法 实现原理 参考链接 问题描述 计算Unity场景中物体B在物体A坐标系下的坐标,且两物体没有父子关系 实现方法 计算一个物体A的 ...
- Unity代码设置天空盒子skybox 及定时切换
目录: 一.代码 二.解析 三.核心 前言:并非自创,看的是同行的博文--在此向前人致谢 一.代码 using System.Collections; using System.Collections ...
- Unity通过代码设置ParticalSystem参考
通过代码设置ParticalSystem的写法参考如下: publicclassSetParticlRateSpeed : SetByFloatInterval {[SerializeField]fl ...
- Unity开发NGUI代码实现ScrollView(放大视图)
尊重原创,转载:http://www.cnblogs.com/daxiaxiaohao/p/4745549.html Unity开发NGUI代码实现ScrollView(放大视图) 下载NGUI包 导 ...
- 7.QT-Qt对象间的父子关系
Qt对象之间可以存在父子关系 继承于QObject类或者其子类的对象,都称为Qt对象 当指定Qt对象的父对象时 需要通过setParent()成员函数来设置对象间的父子关系 子对象将会把自己的指针地址 ...
- Unity3D分离子物体解除父子关系/也可实现对子物体的删除
关于解除父子关系首先看下官方给出的讲解代码. using UnityEngine; using System.Collections;public class example : MonoBehavi ...
- Unity中使用代码将预制加载到场景
Unity中使用代码将预制加载到场景 大家知道, 在日常修改预制的时候很方便, 我们将预制从资源文件夹往场景上"一拖", 然后就可以进行修改, 然后应用保存即可. 但是如果某些需求 ...
最新文章
- openstack运维实战系列(十)之nova指定compute节点和IP地址
- Mybatis报错 TooManyResultsException
- 2020 6-7月 每日花语
- 数塔(hdoj 2084,动态规划递推)
- 利用Javascript的“函数重载”实现自定义Alert样式
- Serverless 实战 —— 利用OneIndex-Serverless无成本搭建属于你自己的网盘
- codeforces-1201 C Maximum Median
- Linux如何安装iperf软件,Linux 下网络性能测试工具 iperf 的安装和使用
- 鸿蒙应用开发--事件
- AD域环境的搭建 基于Server 2008 R2
- C语言-指针的比较/指针加减
- DXUT扩展之摄像机
- 最近在职场的一些感悟
- 原生安卓10怎么打开面部识别_安卓手机运行慢怎么办?只需简单一步立即提速翻倍...
- Top Down Operator Precedence - 自顶向下算符优先分析法
- MD5加密,受到什么影响,改后缀有用么?
- python cmp_to_key
- matlab生成的数值为inf,计算值时为Nan / inf
- chapter5. Java数据结构与java算法
- C++/MFC 面试题(六、逻辑题)