一、上次讲的菊花的四个花瓣,只讲了四个花瓣和在一起的时候的作用,现在是分开的菊花的四个花瓣的作用

1.创建一个Canvas
2.对Canvas进行初始化
3.创建一个Image的UI节点作为Canvas的子节点,名字叫bg。
4.再创建一个GameObject的空节点作为Canvas的子节点。
5.在GameObject下面创建一个叫icon的Image类型的UI子节点
6.把icon的颜色改为红色便于观察,大小改为300X300
点击左上角的stretch,图案选择最右下角的四个花瓣对应四个角的状态,
7.菊花花瓣的作用是父亲节点GameObject伸缩多少,子节点icon就伸缩多少,四个角的偏移量不会变化,相对距离不变。就是子节点在四个花瓣的作用下跟着父节点伸缩。
8.如果上面中间两块花瓣,下面中间两块花瓣,那么父节点伸缩的时候,上下缩的话,子节点也上下缩,左右缩的时候,子节点不会缩。

二、预制体
模板,有的时候,一个小兵要生成10个,需要一个模板
1.创建一个Canvas
2.对Canvas进行初始化
3.创建一个image的UI节点作为Canvas的子节点,名字叫item.
4.在Resources文件夹下面创建一个文件夹叫做prefabs
5.直接把item拖进prefabs文件夹中
6.发现会自动生成一个预制体,原来的item节点也会变成蓝色
7.这时候修改Hierachy下的item节点,预制体也会发生变化,修改之后记得点右上角的Apply
8.Revert表示预制体覆盖回节点,但是修改Rect Transform中的属性是无法Revert的。Apply是从节点再保存回预制体
9.如果想断开这种连接关系,选中节点-->菜单-->GameObject-->Break Prefab Instance
修改预制体,所有与它相关的节点都被修改,除非断开连接,这时候修改预制体,节点不会跟着变,但是一旦点击Revert或者Apply都会重新建立连接

预制体也是节点的一个复制
使用代码实例化预制体
1.写一个叫game_scane的脚本,挂载到Canvas节点上
2.定义脚本中的public属性,public GameObject item_prefab
3.把预制体拖进Hierachy面板的game_scane脚本的item_prefab属性上

public class game_scene : MonoBehaviour {
public GameObject item_prefab; // Use this for initialization
void Start () {
GameObject item = GameObject.Instantiate(this.item_prefab);//以预设体为模板实例化一个物体
item.transform.SetParent(this.transform);//放在正确的父节点下,不写这个会放根节点下
item.transform.localPosition = new Vector3(, , ); //设置坐标
}
}

三、Scroll View节点

1.创建一个Canvas
2.对Canvas进行初始化
3.创建一个Image的UI节点作为Canvas的子节点,名字叫bg。
4.创建一个Scroll View的UI节点在Canvas下作为子节点
5.Scroll View节点下面的Viewport子节点,Viewport子节点有一个Mask组件用来裁剪其子节点的显示范围,Viewport就相当于一个蒙版
6.Viewport节点下面有一个Content节点用来存放内容
7.Scrollbar Horizontal和Scrollbar Vertical是Scroll View的子节点,表示拉条。
8.在Content下面创建多个Imgae的UI子节点,把同一张图片依次拖进去
9.给Content一个排版的脚本,这里用Grid
10.发现运行后可以上下或者左右拖动Content中间的内容,这是因为在Scroll View节点的scroll rect属性面板勾选了Horizontal和Vertical,表示允许横拉和纵拉。
11.有的时候上下拖动不了,是因为Content的高度太小,图片的高度加起来比Content的高度大,修改一下Content的高度就好了,用计算器算出Content的高度。
12.Scrollbar关联的时候不能隐藏,可以直接删除。关联的方式是直接把Scrollbar节点拖进Scroll View的scroll rect的Scrollbar属性里

制作一个排行榜
1.创建一个Canvas
2.对Canvas进行初始化
3.创建一个Image的UI节点作为Canvas的子节点,名字叫bg。
4.创建一个叫rank的Scroll View的UI节点在Canvas下作为子节点
5.给rank一个排行榜的背景图片
6.在rank下面创建一个子Image节点叫tital,用来显示分数排行的标题图片
7.背景图片要在rank节点外面放好了就行了,最好是比rank大一点,可以给rank的Image一个颜色,再隐藏这个Image组件
8.在rank再创建一个rank_option的子节点,类型是Image
9.在rank_option的子节点下面再创建一个mask的子节点用来放头像的裁剪蒙版节点,记得要加上Mask裁剪组件和拖进裁剪贴纸。
10.在Mask节点下面再创建一个叫avator的Image节点用来表示放头像图片。这时候发现没有裁剪成功,是因为没有运行的原因,运行起来,头像就裁剪了。
11.在mask上面再创建一个空的父节点,在这个空的父节点下面创建一个Image类型的节点用来显示相框图片。
12.在rank_option子节点下面创建一个Image类型的UI节点用来放分割线,叫slice_line
13.在rank_option子节点下面创建一个Text类型的UI节点叫unick
14.把整个rank_option节点拖到预制体文件夹prefabs中,可以把空节点的Iamge组件隐藏起来,就可以去掉白色区域了。
15.给rank节点的Content加一个排版的组件grid,一般都是用grid,等一下要弄很多rank_option节点进来
16.用代码实现rank_option节点的实例化和批量添加和摆放

public class game_scene : MonoBehaviour {
public GameObject item_prefab;
public GameObject rank_prefab;
public ScrollRect rank;
// Use this for initialization
void Start () {
// rect transorm
this.rank.content.sizeDelta = new Vector2(, * ); for (int i = ; i < ; i++) {
GameObject opt = GameObject.Instantiate(this.rank_prefab);
opt.transform.SetParent(this.rank.content);
opt.transform.Find("unick").GetComponent<Text>().text = "" + (i + );
}
}
}

关于Unity中stretch的分开使用、预制体、Scroll View的UI节点的更多相关文章

  1. 初学unity 3D 遇到的一个问题--预制体选项没有找到。

    没有找到预制体这个选项. 我的工程如下:

  2. 关于Unity中的NGUI精灵

    NGUI精灵实例 1.创建Unity项目工程和文件目录,保存场景 2.创建一个精灵NGUI---->Create---->Sprite,发现它的UI Sprite组件的贴图属性只支持Atl ...

  3. 关于Unity中从服务器下载资源压缩包AssetBundle的步骤

    AssetBundle 1: 在Unity中,能为用户存储资源的一种压缩格式的打包集合,他可以存任意一种Unity引擎可以识别的资源: 模型,音频,纹理图,动画, 开发者自定义的二进制文件; 2: 这 ...

  4. Prafab Varient 预制体变体

    预制体与类的类比思维:     预制体相当于一个类,当它应用到场景当中,就是一个实例. 类的继承特性也充分运用到预制体中,即预制体变体. 相似预制体的需求场景:         例子1:多个游戏的窗口 ...

  5. PlayMaker 做成预制体

    把包含PlayMaker状态机的游戏物体做成预制体后,再编辑PlayMaker状态机的时候,会有两个选项 * Edit Prefab :编辑完成后预制体的PlayMaker状态机也会改变: * Edi ...

  6. Unity中Oculus分屏相机和普通相机一键切换

    Unity中Oculus分屏相机和普通相机一键切换 一.OCulus 分屏相机介绍 在VR开发工程中,总会觉得OC分屏的处理太慢,严重浪费时间啊! 但是不使用有不好调试,来回切换相机就成为了一个必须. ...

  7. 关于Unity中的UGUI优化,你可能遇到这些问题

    https://blog.uwa4d.com/archives/QA_UGUI-1.html 关于Unity中的UGUI优化,你可能遇到这些问题 作者:admin / 时间:2016年11月08日 / ...

  8. 「翻译」Unity中的AssetBundle详解(二)

    为AssetBundles准备资源 使用AssetBundles时,您可以随意将任何Asset分配给所需的任何Bundle.但是,在设置Bundles时,需要考虑一些策略.这些分组策略可以使用到任何你 ...

  9. Unity教程之再谈Unity中的优化技术

    这是从 Unity教程之再谈Unity中的优化技术 这篇文章里提取出来的一部分,这篇文章让我学到了挺多可能我应该知道却还没知道的知识,写的挺好的 优化几何体   这一步主要是为了针对性能瓶颈中的”顶点 ...

随机推荐

  1. TCP/IP协议栈与数据报封装

    一.ISO/OSI参考模型 OSI(open system interconnection)开放系统互联模型是由ISO(International Organization for Standardi ...

  2. CentOS7 安装配置DNS服务器

    一.安装 yum install bind 二.配置 1. /etc/named.conf // // named.conf // // Provided by Red Hat bind packag ...

  3. Ibatis基础知识:#与$的差别

    背景 Ibatis是一个轻量级.非侵入式的持久层框架,适用于范围较广.较轻便--当然,不管J2EE中哪一个持久层框架,都会基于JDBC(不细究JNDI方式).我们在SqlMap中编写SQL,利用各种S ...

  4. 整理了一份招PHP高级工程师的面试题(转)

    1. 基本知识点 HTTP协议中几个状态码的含义:1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码   说明 100   (继续) 请求者应当继续提出请求. 服务器返回此代码 ...

  5. perl的内置函数scalar

    scalar可以求数组的长度,但是,在scalar的说明里面并没有这一项. Forces EXPR to be interpreted in scalar context and returns th ...

  6. jQuery 隐藏与显示 input 默认值

    分享下jQuery如何隐藏和显示 input 默认值的例子. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...

  7. 【Android】20.0 第20章 音频、视频、拍照、语音合成

    分类:C#.Android.VS2015: 创建日期:2016-03-11 一.简介 Android提供了常见的多媒体文件编码.解码机制,你可以直接调用Android提供的API,实现相册.播放器.录 ...

  8. win32串口编程

    翻译自:ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.WIN32COM.v10.en/dnfiles/html/msdn_serial.htm 老外写的文章, ...

  9. Sql Server数据库自增长字段标识列的插入或更新修改操作办法

    写在前面的话:在日常的Sql server开发中,经常会用到Identity类型的标识列作为一个表结构的自增长编号.比如文章编号.记录编号等等.自增长的标识很大程度上方便了数据库程序的开发,但有时候这 ...

  10. bash deploy.sh 通过bash命令 执行scp -r 命令将本地文件拷贝到服务器

    deploy.sh 文件内容如下 #!/bin/bash #scp -r ./* root@XXXXX:/root/sunSH/xadserver/ function getdir(){ for el ...