unity 实现图片的放大与缩小,并实现拖拽浏览
kingryh
kingryh 11271 9
精华加亮 脚本 2016-03-25 15:52
组图

    首先,是要新建一个UIRoot(使用的NGUI开发),因为一个项目中有时候往往一个UIRoot无法搞定,需要分割出一部分进行单独的处理,所以大家要视情况而定。
    using UnityEngine;
    using System.Collections;
           
    public class Minimap : MonoBehaviour {
           
        public Camera minimapCamera;
        public float minfiledView = 44f;
        public float maxfiledView = 95f;
        private Vector3 offsetPosition;
           
        void Start () {
           
        }
               
        // Update is called once per frame
        void Update () {
            
        }
           
        public void ZoomInButtonClick()
        {
            if (minimapCamera.fieldOfView > minfiledView)
            {
                minimapCamera.fieldOfView -= 1;
            }
            else
                minimapCamera.fieldOfView = minfiledView; 
        }
           
        public void ZoomOutButtonClick()
        {
            if (minimapCamera.fieldOfView < maxfiledView)
            {
                minimapCamera.fieldOfView += 1;
            }
            else
                minimapCamera.fieldOfView = maxfiledView;
        }
    }
    此处的代码构思来源于小地图的制作,通过控制fieldOfView来确定Camera的视野大小,大家也可以设定视野的范围,让他在指定区间内变化。

    接下来是要对图片的动态载入

    using UnityEngine;
    using System.Collections;
    using System.IO;
    using System;
    using System.Drawing;
           
    public class OpenPicture : MonoBehaviour
    { 
        public Texture2D _texture;
        public GameObject DaYangTu;
           
        IEnumerator Open()
        {
            string path = Application.persistentDataPath + "/Image" + "/placeholder.jpg";
            WWW www = new WWW("file://" + path);
            yield return www;
            Debug.Log(":" + www.error);
            _texture = new Texture2D(300, 300);
            _texture = www.texture;
            DaYangTu.GetComponent<UITexture>().mainTexture = _texture;
        }
           
        public void OnClick()
        {
            DaYangTu.SetActive(true);
            StartCoroutine(Open());
        }
        // Update is called once per frame
        void Update () {
               
        }
    }
    此处我使用的是使用WWW加载本地指定路径的文件,发布后可以更换图片,但名字要保持不变。
    最后是实现对图片的拖拽浏览,就是给你被拖拽的对象添加一个UI Drag Object脚本,注意不要忘记给被拖拽对象加Box Collider.
    2条评分, 鲜花+501
    • 鲜花+1
      非常好的东西
    • 鲜花500
      谢谢分享,应该加上界面不同分辨率缩放的情况。
    分享:
    游客
    要评论请先登录 或者 注册
    爱笑的笔迹 学徒 2016-04-06 19:25 1楼
    http://www.ceeger.com/forum/read.php?tid=24784&fid=2 大神能不能帮忙解决我的这个问题?
    Alex_193 新手 2016-04-16 11:56 2楼
    好东西,学习了!
    magicer 学徒 2016-04-21 09:09 3楼
    这个东西很好用呢
    太极尤 学徒 2016-05-18 14:06 4楼
    写的很好,先学习了~
    无聊的时候抽抽风 学徒 2016-06-20 15:53 5楼
    .................................
    mjdy 学徒 2016-07-07 11:05 6楼
    学习学习了~~~~
    6663310 学徒 2016-07-12 20:35 7楼
    问额外热舞维吾尔
    zzy19891026 新手 2016-07-15 10:04 8楼
    学习了,谢谢
    hquu 学徒 2016-07-22 14:16 9楼
    学习了  学习了
    返回顶部