Unity开发NGUI代码实现ScrollView(放大视图)

下载NGUI包

导入NGUI3.9.1版本package

创建MainCameraScript.cs脚本

MainCameraScript.cs

using UnityEngine;
using System.Collections; public class MainCameraScript : MonoBehaviour { // Use this for initialization
void Start () { } // Update is called once per frame
void Update () { }
}

创建NGUI根节点的方法

	private GameObject Window{ set; get;}

	void CreateUI()
{
//创建根节点
this.Window = NGUITools.CreateUI(false).gameObject;
}

在Window上添加滚动子视图

	private UIScrollView scrollView;
void CreateUI()
{
//创建根节点
this.Window = NGUITools.CreateUI(false).gameObject; //在根节点上创建一个UIScrollView子控件
this.scrollView = NGUITools.AddChild<UIScrollView>(this.Window); }

添加下载图片的方法

	private Texture texture;
private UITexture imageView; //一个协程用到的函数,下载图片
IEnumerator DownloadTexture()
{
WWW www = new WWW ("http://p.baidupcs.com/file/00fb26654a14f822a8b8d4f99bffff4f?bkt=p2-nj-562&fid=4213918792-250528-600499188078355&time=1440052584&sign=FDTAXERBH-DCb740ccc5511e5e8fedcff06b081203-JvUURjnKMtJDPCeN7DC01lNSiAM%3D&to=pb&fm=Nan,B,G,bs&sta_dx=0&sta_cs=0&sta_ft=png&sta_ct=0&fm2=Nanjing02,B,G,bs&newver=1&newfm=1&secfm=1&flow_ver=3&expires=8h&rt=sh&r=853121535&mlogid=2433540290&vuk=4213918792&vbdid=724775054&fin=icon.png&fn=icon.png&uta=0&rtype=0&iv=1&isw=0"); yield return www; this.texture = www.texture;
}

重置ScollView上的Panel对象

	/// <summary>
/// 重置Panel对象
/// </summary>
/// <param name="panel">Panel.</param>
void ResetPanel(UIPanel panel)
{
//缩小,并且居中显示
panel.transform.localPosition = new Vector3(0,0,0);
//设置移动的位置
panel.clipOffset = new Vector2(0,0);
//设置大小
panel.baseClipRegion = new Vector4 (0, 0, 100, 100); }

设定滚动视图的一些属性

	private UIScrollView scrollView;
void CreateUI()
{
//创建根节点
this.Window = NGUITools.CreateUI(false).gameObject; //在根节点上创建一个UIScrollView子控件
this.scrollView = NGUITools.AddChild<UIScrollView>(this.Window);
//设定随意移动
this.scrollView.movement = UIScrollView.Movement.Unrestricted;
//重置panel对象
ResetPanel (this.scrollView.GetComponent<UIPanel> ());
//创建ImageView
CreateImage();
}

创建一个需要显示下载图片的ImageView

	private UITexture	 imageView;
void CreateImage()
{
this.imageView = NGUITools.AddChild<UITexture> (this.scrollView.gameObject);
this.imageView.SetRect (-50, -50, 100, 100); //给图片对象添加缺失组件
NGUITools.AddMissingComponent<UIDragScrollView> (this.imageView.gameObject);
NGUITools.AddMissingComponent<BoxCollider> (this.imageView.gameObject);
UIButton button = NGUITools.AddMissingComponent<UIButton> (this.imageView.gameObject); //添加按钮的触发事件,单击图片放大、缩小
button.onClick.Add (new EventDelegate (() => { //小图片
if (this.imageView.width == 100) { //放大
this.imageView.SetRect(-512,-512,1024,1024); }
else//大图片
{
ResetPanel(this.scrollView.GetComponent<UIPanel>());
this.imageView.SetRect(-50,-50,100,100);
} })); //设定碰撞器对象可以自动缩放
this.imageView.autoResizeBoxCollider = true;
this.imageView.ResizeCollider ();
}

整个MainCameraScript.cs的代码如下

using UnityEngine;
using System.Collections; public class MainCameraScript : MonoBehaviour { private GameObject Window{ set; get;}
private Texture texture; IEnumerator DownloadTexture()
{
WWW www = new WWW ("http://p.baidupcs.com/file/00fb26654a14f822a8b8d4f99bffff4f?bkt=p2-nj-562&fid=4213918792-250528-600499188078355&time=1440052584&sign=FDTAXERBH-DCb740ccc5511e5e8fedcff06b081203-JvUURjnKMtJDPCeN7DC01lNSiAM%3D&to=pb&fm=Nan,B,G,bs&sta_dx=0&sta_cs=0&sta_ft=png&sta_ct=0&fm2=Nanjing02,B,G,bs&newver=1&newfm=1&secfm=1&flow_ver=3&expires=8h&rt=sh&r=853121535&mlogid=2433540290&vuk=4213918792&vbdid=724775054&fin=icon.png&fn=icon.png&uta=0&rtype=0&iv=1&isw=0");
yield return www; this.texture = www.texture;
} private UIScrollView scrollView;
void CreateUI()
{
//创建根节点
this.Window = NGUITools.CreateUI(false).gameObject; //在根节点上创建一个UIScrollView子控件
this.scrollView = NGUITools.AddChild<UIScrollView>(this.Window);
//设定随意移动
this.scrollView.movement = UIScrollView.Movement.Unrestricted;
//重置panel对象
ResetPanel (this.scrollView.GetComponent<UIPanel> ());
//创建ImageView
CreateImage();
} private UITexture imageView;
void CreateImage()
{
this.imageView = NGUITools.AddChild<UITexture> (this.scrollView.gameObject);
this.imageView.SetRect (-50, -50, 100, 100); //给图片对象添加缺失组件
NGUITools.AddMissingComponent<UIDragScrollView> (this.imageView.gameObject);
NGUITools.AddMissingComponent<BoxCollider> (this.imageView.gameObject);
UIButton button = NGUITools.AddMissingComponent<UIButton> (this.imageView.gameObject); //添加按钮的触发事件,单击图片放大、缩小
button.onClick.Add (new EventDelegate (() => { //小图片
if (this.imageView.width == 100) { //放大
this.imageView.SetRect(-512,-512,1024,1024); }
else//大图片
{
ResetPanel(this.scrollView.GetComponent<UIPanel>());
this.imageView.SetRect(-50,-50,100,100);
} })); //设定碰撞器对象可以自动缩放
this.imageView.autoResizeBoxCollider = true;
this.imageView.ResizeCollider ();
} /// <summary>
/// 重置Panel对象
/// </summary>
/// <param name="panel">Panel.</param>
void ResetPanel(UIPanel panel)
{
//缩小,并且居中显示
panel.transform.localPosition = new Vector3(0,0,0);
//设置移动的位置
panel.clipOffset = new Vector2(0,0);
//设置大小
panel.baseClipRegion = new Vector4 (0, 0, 100, 100); } // Use this for initialization
void Start () { CreateUI (); StartCoroutine ("DownloadTexture");
} // Update is called once per frame
void Update ()
{
//设置图片
if (this.texture != null && this.imageView.mainTexture == null) {
this.imageView.mainTexture = this.texture;
}
}
}

效果如下

[Unity]Unity开发NGUI代码实现ScrollView(放大视图)的更多相关文章

  1. [Unity]Unity开发NGUI代码实现ScrollView(滚动视图)

    Unity开发NGUI代码实现ScrollView(滚动视图) 下载NGUI包 导入NGUI3.9.1版本package 链接: http://pan.baidu.com/s/1mgksPBU 密码: ...

  2. Android中通过Java代码实现ScrollView滚动视图-以歌词滚动为例

    场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...

  3. Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机

    Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机 Unity中制作一个望远镜 本节制作的望远镜,在鼠标左键按下时,看到的视图会变大:当不再按下的时候,会慢慢缩小成原来的视图.游戏中时常出现的 ...

  4. 喵的Unity游戏开发之路 - 在球体上行走

    很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀的Unity3D游戏开发教程,翻译整理后放送给大家,教您从零开始一步一步掌握Unity3D游戏开发. 本文不 ...

  5. Unity该插件NGUI得知(9)—— Tween并转换成世界坐标系的大小NGUI尺寸

    在游戏中,还有一种比较常见的动画,这是进球后产生,分数将被显示在游戏,而快速移动,使其失去位置加入.就打算使用NGUI的Tween来制作这样的分数动画效果. 依据 Unity插件之NGUI学习(2), ...

  6. C# Unity游戏开发——Excel中的数据是如何到游戏中的 (二)

    本帖是延续的:C# Unity游戏开发——Excel中的数据是如何到游戏中的 (一) 上个帖子主要是讲了如何读取Excel,本帖主要是讲述读取的Excel数据是如何序列化成二进制的,考虑到现在在手游中 ...

  7. C# Unity游戏开发——Excel中的数据是如何到游戏中的 (三)

    本帖是延续的:C# Unity游戏开发——Excel中的数据是如何到游戏中的 (二) 前几天有点事情所以没有继续更新,今天我们接着说.上个帖子中我们看到已经把Excel数据生成了.bin的文件,不过其 ...

  8. C# Unity游戏开发——Excel中的数据是如何到游戏中的 (四)2018.4.3更新

    本帖是延续的:C# Unity游戏开发--Excel中的数据是如何到游戏中的 (三) 最近项目不算太忙,终于有时间更新博客了.关于数据处理这个主题前面的(一)(二)(三)基本上算是一个完整的静态数据处 ...

  9. 2017年Unity游戏开发视频教程(入门到精通)

    本文是我发布的一个Unity游戏开发的学习目录,以后我会持续发布一系列的游戏开发教程,都会更新在这个页面上,适合人群有下面的几种: 想要做独立游戏的人 想要找游戏开发相关工作的人 对游戏开发感兴趣的人 ...

随机推荐

  1. 【威佐夫博奕】 betty定理 poj 1067

    Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...

  2. java模式:模板模式的简单理解

    1.模板模式就是用虚类作为基类将几个要执行差不多操作中相同的部分提取出来,不同的部分各自实现! 2.下面给出简单栗子: 我要进行的操作是将大象和狐狸放入冰箱,放入大象和狐狸有相同的步骤:开冰箱和关冰箱 ...

  3. oracle数据库的一次异常起停处理。

    在重启数据库的时候,忘记把一个应用关停了,想起来的时候,就ctrl+c,把数据库shutdown immediate 给强制停下了,把该应用再停止,然后shutdown immdiate,这时候数据报 ...

  4. linux的学习系列 5--环境变量

    在Linux中,环境变量是一个很重要的概念.环境变量可以由系统.用户.Shell以及其他程序来设定. 变量就是一个可以被赋值的字符串,赋值范围包括数字.文本.文件名.设备以及其他类型的数据. 下面的例 ...

  5. PHP 实现定时任务的几种方法

    一. 简单直接不顾后果型 <?php ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limi ...

  6. 项目总结SpringMVC相关

    流程文字概述1.用户发送请求至前端控制器DispatcherServlet2.DispatcherServlet收到请求调用HandlerMapping处理器映射器.3.处理器映射器找到具体的处理器, ...

  7. Git学习 -- 冲突解决

    当连个分支对统一文件提交了不同修改时,可能会出现冲突,例如: $ git merge feature1 Auto-merging readme.txt CONFLICT (content): Merg ...

  8. codeforces 558/C Amr and Chemistry(数论+位运算)

    题目链接:http://codeforces.com/problemset/problem/558/C 题意:把n个数变成相同所需要走的最小的步数易得到结论,两个奇数不同,一直×2不可能有重叠枚举每个 ...

  9. 阅读 LdrInitializeThunk

    参考: http://blog.csdn.net/hw_henry2008/article/details/6568255 Windows 的 DLL 装入(除 ntdll.dll 外)和连接是通过 ...

  10. 此博客停止更新,请访问chenshuo.net

    非常感谢博客园,该博客不在更新,请访问 chenshuo.net