Unity开发NGUI代码实现ScrollView(放大视图)
尊重原创,转载:http://www.cnblogs.com/daxiaxiaohao/p/4745549.html
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; } } }
效果如下
转载于:https://www.cnblogs.com/loveforliving/p/4754860.html
Unity开发NGUI代码实现ScrollView(放大视图)相关推荐
- Android中通过Java代码实现ScrollView滚动视图-以歌词滚动为例
场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...
- 【绝对原创】Unity开发 NGUI如何使游戏屏幕 自适应
使用NGUI如何使游戏屏幕 自适应 Hello 大家好,我叫阿祥,英文名叫LuckyDog.俺是新来滴,大家多多关照.. 首次写技术博客,我只是将这儿当做自己存储知识笔记的地方和以知识会友的平台,希望 ...
- 关于Unity中NGUI的Tab商城、Scrollview和打字机效果的实现
Tab商城实例 UIToggle 和 UIToggledObjects+ Box Collider(实现商城功能必备) 1.创建两个个UI Sprite,Sprite1和Sprite2 2.给Spri ...
- 【Unity开发】VSCode 代码补全缺失问题的各种修复方法
[Unity开发]VSCode 代码补全缺失问题的各种修复方法 尝试:VSC的各种配置 尝试:更改配置语言 尝试:更新 VSCode Editor 在 Unity 内 尝试:.Net 安装 没错!我被 ...
- 游戏思考24:游戏寻路算法思考和Unity场景相关代码开发原则及导入地图数据(10/09)
文章目录 一.游戏寻路算法 1)总体划分为 2)取几种算法详细介绍 (1)JPS介绍及其优化 二.场景相关开发原则 1)Unity开发商业项目场景开发基本原则 2)商业项目的大体流程和组织思路 一.游 ...
- Unity开发备忘录000028:Bolt无代码做游戏——控制角色行走
1. 添加角色 (1)添加地面碰撞器 在添加角色之前,先添加一个地面碰撞器,否则添加UnityChan角色后,由于重力的作用,她将坠入深渊. 创建一个空对象,更名为CollierOnGround,为其 ...
- 【Unity3D-UGUI系列】(十二)ScrollView 滚动视图组件详解
推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有 ...
- 《Unity开发实战》——2.2节创建画中画效果
本节书摘来自华章社区<Unity开发实战>一书中的第2章,第2.2节创建画中画效果,作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云栖社区& ...
- unity开发入门_Unity游戏开发终极入门指南
unity开发入门 Unity is a great tool for prototyping everything from games, to interactive visualisations ...
最新文章
- python人脸识别毕业设计-基于Python的人脸识别系统研究.docx
- RedHat 5.4 RHCE DHCP学习笔记
- 云炬Android开发笔记 10主界面-首页UI与数据解析器开发(RecyclerView)
- hihocoder 1075 : 开锁魔法III
- QT的QStatusTipEvent类的使用
- Xilinx:让FFmpeg在FPGA上玩的爽
- 【leetcode】75. Sort Colors
- shiro框架,自定义realm注入service失败解决办法
- python的try和except_Python用try except处理程序异常的三种方法总结
- 2014东师计算机应用基础离线作业,2014秋东师《计算机应用基础》离线作业及答案...
- 《迷宫》之站立会议—5.16
- 堆和栈的概念和区别?
- Flex中如何通过设置GridLines对象的horizontalAlternateFill样式交错显示LineSeries图表背景颜色的例子...
- MATLAB程序(入门)
- 自回归模型 java_Eviews的ARIMA(差分自回归移动平均模型)模型入门操作指南
- 超级外链SEO工具源码 可发9600条优质外链
- java 二进制加减_二进制加法Java实现
- 搞笑GIF动图怎么制作
- H3CNE 综合实验,全网最全教程
- 程序员如何规避吃青春饭?【转载】