尊重原创,转载: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(放大视图)相关推荐

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

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

  2. 【绝对原创】Unity开发 NGUI如何使游戏屏幕 自适应

    使用NGUI如何使游戏屏幕 自适应 Hello 大家好,我叫阿祥,英文名叫LuckyDog.俺是新来滴,大家多多关照.. 首次写技术博客,我只是将这儿当做自己存储知识笔记的地方和以知识会友的平台,希望 ...

  3. 关于Unity中NGUI的Tab商城、Scrollview和打字机效果的实现

    Tab商城实例 UIToggle 和 UIToggledObjects+ Box Collider(实现商城功能必备) 1.创建两个个UI Sprite,Sprite1和Sprite2 2.给Spri ...

  4. 【Unity开发】VSCode 代码补全缺失问题的各种修复方法

    [Unity开发]VSCode 代码补全缺失问题的各种修复方法 尝试:VSC的各种配置 尝试:更改配置语言 尝试:更新 VSCode Editor 在 Unity 内 尝试:.Net 安装 没错!我被 ...

  5. 游戏思考24:游戏寻路算法思考和Unity场景相关代码开发原则及导入地图数据(10/09)

    文章目录 一.游戏寻路算法 1)总体划分为 2)取几种算法详细介绍 (1)JPS介绍及其优化 二.场景相关开发原则 1)Unity开发商业项目场景开发基本原则 2)商业项目的大体流程和组织思路 一.游 ...

  6. Unity开发备忘录000028:Bolt无代码做游戏——控制角色行走

    1. 添加角色 (1)添加地面碰撞器 在添加角色之前,先添加一个地面碰撞器,否则添加UnityChan角色后,由于重力的作用,她将坠入深渊. 创建一个空对象,更名为CollierOnGround,为其 ...

  7. 【Unity3D-UGUI系列】(十二)ScrollView 滚动视图组件详解

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有 ...

  8. 《Unity开发实战》——2.2节创建画中画效果

    本节书摘来自华章社区<Unity开发实战>一书中的第2章,第2.2节创建画中画效果,作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云栖社区& ...

  9. unity开发入门_Unity游戏开发终极入门指南

    unity开发入门 Unity is a great tool for prototyping everything from games, to interactive visualisations ...

最新文章

  1. python人脸识别毕业设计-基于Python的人脸识别系统研究.docx
  2. RedHat 5.4 RHCE DHCP学习笔记
  3. 云炬Android开发笔记 10主界面-首页UI与数据解析器开发(RecyclerView)
  4. hihocoder 1075 : 开锁魔法III
  5. QT的QStatusTipEvent类的使用
  6. Xilinx:让FFmpeg在FPGA上玩的爽
  7. 【leetcode】75. Sort Colors
  8. shiro框架,自定义realm注入service失败解决办法
  9. python的try和except_Python用try except处理程序异常的三种方法总结
  10. 2014东师计算机应用基础离线作业,2014秋东师《计算机应用基础》离线作业及答案...
  11. 《迷宫》之站立会议—5.16
  12. 堆和栈的概念和区别?
  13. Flex中如何通过设置GridLines对象的horizontalAlternateFill样式交错显示LineSeries图表背景颜色的例子...
  14. MATLAB程序(入门)
  15. 自回归模型 java_Eviews的ARIMA(差分自回归移动平均模型)模型入门操作指南
  16. 超级外链SEO工具源码 可发9600条优质外链
  17. java 二进制加减_二进制加法Java实现
  18. 搞笑GIF动图怎么制作
  19. H3CNE 综合实验,全网最全教程
  20. 程序员如何规避吃青春饭?【转载】

热门文章

  1. Nginx research, nginx module development
  2. MFC之进度条CProgressCtrl
  3. android游戏开发框架libgdx的使用(六)--演员和演出
  4. linux进程--死锁产生的原因及四个必要条件(六)
  5. linux虚拟网络设备之veth(二)
  6. leetcode算法题--删除排序链表中的重复元素 II
  7. php 获取鼠标的坐标,如何实时获取鼠标的当前坐标-
  8. 亮剑.NET. 图解C#开发实战 在线阅读
  9. Visual C++ dll
  10. 《Haskell趣学指南》笔记之I/O