Unity3D: 脚本控制动态加载预设物体
2017-07-25 14:21
1556 查看
在使用Unity 中,动态加载预制体是比较常见的。这里
4000
简单介绍一下,加载的几个步骤及过程。
用代码控制 一个预设物体在场景中显示,一般需要三个步骤:
1.预设体 资源加载
在 Assets 目录下 创建一个 resource 文件夹,将做好的 prefab 放在这个文件夹下:
如: login_layer, 在需要动态加载的时候这样用:
// 加载预设体资源
GameObject layerPrefab = Resource.Load(“Prefabs/login_layer”).gameobject;
通过这个操作,实现从资源目录 “/Resource/Prefabs/login_layer” 的预设体加载到场景中,用GameObject 对象来存放。(此时该预设体并未真正加载到场景中,因为还没有进行实例化)。
预设体实例化:
对资源进行实例化,需要用 Instantiate 函数来完成,实际就是从预设体资源中克隆出一个对象,加载到当前场景中。
// 实例化预设体
GameObject login_layer = Instantiate(layerPrefab, null, true);
(这里实例化后,并没有对其属性进行操作,其父节点默认是放在当前场景的最外层)
3.实例化对象属性设置
一般我们需要对我们的实例化对象,放在想要的层次下面。所以需要为对实例化对象设置一个父节点
代码可以简化成:
这儿有个问题:
就是 初始化出来的 预设体 默认是在 Canvas的左下 的原点坐标。如果需要放在自己想要的位置的话,还需要重新配置 初始化后的 出现位置点.
添加这两句代码即可:
4000
简单介绍一下,加载的几个步骤及过程。
用代码控制 一个预设物体在场景中显示,一般需要三个步骤:
1.预设体 资源加载
在 Assets 目录下 创建一个 resource 文件夹,将做好的 prefab 放在这个文件夹下:
如: login_layer, 在需要动态加载的时候这样用:
// 加载预设体资源
GameObject layerPrefab = Resource.Load(“Prefabs/login_layer”).gameobject;
通过这个操作,实现从资源目录 “/Resource/Prefabs/login_layer” 的预设体加载到场景中,用GameObject 对象来存放。(此时该预设体并未真正加载到场景中,因为还没有进行实例化)。
预设体实例化:
对资源进行实例化,需要用 Instantiate 函数来完成,实际就是从预设体资源中克隆出一个对象,加载到当前场景中。
// 实例化预设体
GameObject login_layer = Instantiate(layerPrefab, null, true);
(这里实例化后,并没有对其属性进行操作,其父节点默认是放在当前场景的最外层)
3.实例化对象属性设置
一般我们需要对我们的实例化对象,放在想要的层次下面。所以需要为对实例化对象设置一个父节点
GameObject layerPrefab = Resource.Load("Prefabs/login_layer").gameobject; GameObject login_layer = Instantiate(layerPrefab, null, true); GameObject canvas = GameObject.Find("Canvas"); login_layer.transform.parent = canvas.transform;
代码可以简化成:
//直接查找 并初始化 GameObject login_layer = Instantiate(Resource.Load("Prefabs/login_layer").gameobject); GameObject canvas = GameObject.Find("Canvas"); login_layer.transform.parent = canvas.transform;
这儿有个问题:
就是 初始化出来的 预设体 默认是在 Canvas的左下 的原点坐标。如果需要放在自己想要的位置的话,还需要重新配置 初始化后的 出现位置点.
添加这两句代码即可:
login_layer.transform.LocalScale = Vector2.one; // 初始大小 login_layer.transform.LocalPosition = Vector3.zero; // 相对于被放置父节点的 零点坐标位置
相关文章推荐
- Unity3d热更新全书-加载(二)如何在不用AssetBundle的前提下动态加载预设
- unity3d动态加载脚本
- Unity3d热更新 加载(二)如何在不用AssetBundle的前提下动态加载预设
- [原] unity3d动态加载脚本
- Unity3d创建物体,寻找物体,加载物体,添加脚本
- Unity3d热更新全书-加载(二)如何在不用AssetBundle的前提下动态加载预设
- unity3d官网手册翻译——(脚本部分)用组件控制物体
- [Unity3d]控制物体的旋转以及缩放
- c if做判断,控制div动态加载图片按钮
- Unity3D 加载fbx模型,实现简单的方向控制
- 动态加载JS脚本的4种方法
- [unity基础教程]Unity3D实现动态加载游戏资源(转)
- Unity3D 陀螺仪控制摄像头脚本 GyroController
- Unity3D Player角色移动控制脚本
- JS 动态加载脚本并在下载完成后执行回调
- 要实现动态加载JS脚本有4种方法
- js实现动态加载脚本的方法
- Unity3D中Resources动态加载NGUI图片的方法!!!
- 浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
- Unity2D - 6. 生成随机地图 (2) - 脚本控制Tilemap (2) 加载已有房间地图