栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

unity用代码加载并创建一个预制体实例以及设置position

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

unity用代码加载并创建一个预制体实例以及设置position

GameObject go = GameObject.Instantiate(Resources.Load("my1")) as GameObject;
go.transform.position = new Vector3(0, 0, 0);

预制体要放到Resources文件夹里
加载后 不需要addchild啥的
他会直接显示在舞台上
这一点和h5引擎什么的都不一样

如果你想设置他的父亲是谁
那么这样做

GameObject father = GameObject.Instantiate(Resources.Load("my1")) as GameObject;
father.transform.position = new Vector3(1, 0, 1);
GameObject child = GameObject.Instantiate(Resources.Load("my1")) as GameObject;
child.transform.parent = father.transform;
child.transform.localPosition = new Vector3(1, 0, 1);

记住 设置父亲后 之前的坐标会变为0,0,0
所以设置后需要自己设置下坐标

相信各位看到了
我设置的是localPosition 而不是 position
为什么呢?
因为 position 是 The world space position of the Transform.
而localPosition 是 Position of the transform relative to the parent transform.

那如果直接设置child的position 会咋样呢?
会显示在世界坐标系里你设置的位置。
unity系统会自动换算一下
就比如
我设置刚才那个child的position为0,0,0
那么他的坐标会变为

也就是说,不需要你考虑父容器的坐标偏移。unity会自动给你设置好。这一点确实很方便。
以前h5总是要 localtoglobal 挺麻烦的。

forward什么的 其实都是针对于世界坐标的


unity面板里显示的是local position
而在程序里设置的position 其实是世界坐标系

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/898418.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号