[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;
		}
	}
}

效果如下

时间: 2024-11-02 11:56:54

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

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

场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改为LinearLayout,并通过android:orientation="vertical">设置为垂直布局,然后添加id属性,并设置内边距 <?xml version="1.0" encoding="utf-8"?> <L

unity开发c#代码

1.摄像头跟随主角移动,并支持旋转. 开发过程中需要摄像头以一定距离跟随player,同时会进行旋转,属于一种常见的跟随方式. using UnityEngine; using System.Collections; public class CameriaTrack : MonoBehaviour { private Vector3 offset = new Vector3(0,5,4);//相机相对于玩家的位置 private Transform target; private Vector

步步为营_Android开发课[25]_用户界面之ScrollView(滚动视图)

Focus on technology, enjoy life!-- QQ:804212028 浏览链接:http://blog.csdn.net/y18334702058/article/details/44624305 主题:用户界面之ScrollView(滚动视图) - ScrollView滚动视图实例: activity_main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayo

Unity的NGUI插件篇——入场效果

Unity的NGUI插件篇--入场效果 入场效果 入场效果需要借助于NGUI提供的TweenPosition类来完成,为了说明此类的使用方法,本节将使会讲解两个示例.本文选自  大学霸 <NGUI使用手册>  一书 匀速入场 将游戏主菜单看作一个整体,本小节会令其自上而下匀速入场,具体的实现过程如下: (1)在Project视图里,新建一个C#脚本,命名为AppearFromAbove,为其添加下面的代码: 01     using UnityEngine; 02     using Syst

unity 开发入门

---恢复内容开始--- 使用Unity开发一个打飞机的初级入门小游戏. 实现功能: 一.界面UI:3个界面:1开始界面,2游戏界面,3解释界面. 1.开始界面: 主要代码: using UnityEngine;using System.Collections; public class projectile : MonoBehaviour { private Transform m_projectile; private Rigidbody goprojectile; void Start (

VC项目开发之单文档多视图实现-非分割窗口[转]

k_eckel:http://www.mscenter.edu.cn/blog/k_eckel 多视图是VC开发中经常要用到的技术之一,一般地实现单文档多视图有两种方式 1)通过视图分割的技术(使用CSplitterWnd实现),将窗口分割为多个部分,每个部分显示各自显示不同的视图,这种技术实现起来比较简单,并且相关的资料也很多. 2)通过一个文档关联多个视图,窗口显示整个视图. 第二种实现较第一种复杂,这里给出详细的实现方法. Step 1:使用VC 6.0新建一个Project,命名为:Mu

ASP.NET MVC+EF5 开发常用代码

Asp.Net Mvc,EF 技术常用点总结 1.Asp.Net MVC a)获得当前控制器名和当前操作的名称(action) 1.Action 中 RouteData.Values["controller"].ToString(); RouteData.Values["action"].ToString(); 2.页面中(view) ViewContext.RouteData.Values["controller"].ToString().To

iOS开发:使用Tab Bar切换视图

iOS开发:使用Tab Bar切换视图 上一篇文章提到了多视图程序中各个视图之间的切换,用的Tool Bar,说白了还是根据触发事件使用代码改变Root View Controller中的Content View.这次,我们还是讲一讲切换视图,不过这次使用的是Tab Bar. 这次要写的程序运行起来的效果是这样的:底部有几个图标,每个图标对应一个视图.每点击一个图标,对应的视图就会打开.如下图,就是我们做好的程序效果:    每个Tab Bar有一个对应颜色的视图. 为了搞清使用Tab Bar切

蓝鸥Unity开发基础——If 语句学习笔记

蓝鸥Unity开发基础--If 语句学习笔记 本节内容:程序的三种结构,if语句,问号表达式 程序的三种结构 顺序结构:顺序执行语句 分支结构:通过进行判断,在多个语句块中选择某一个执行 循环结构:条件满足时,反复执行同一语句块 If语句 用if语句可以构成分支结构 它根据给定的条件进行判定,用来决定要执行某个程序段 一.if(条件表达式){语句1} using System; namespace Lesson11{    class MainClass    {        public s