• 96次航拍峨眉 换个角度看巴蜀名山 中国国家地理网 2019-04-23
  • 俄罗斯电影《最后一球》定档落魄球星遇上菜鸟球队 2019-04-21
  • 【理上网来·辉煌十九大】缅甸资深媒体人高度评价习近平十九大报告:立意高远 内涵丰富 2019-04-21
  • 特朗普和金正恩先后抵达嘉佩乐酒店 会晤即将开始 2019-04-17
  • 中国侨联直属机关党委举办党务干部培训班 2019-04-17
  • 上海合作组织青岛峰会举行 2019-04-07
  • IT热点小度智能音箱发布 新飞电器破产拍卖 2019-04-04
  • 台州公务员管理再也不用“往返跑”了!“最多跑一次”撬动组织人事改革 全省首个试点 2019-04-03
  • 我要讨干嘛?姜太公钓鱼,愿者上钩。 2019-04-03
  • 新疆花开天山南北 笑迎八方来客 2019-03-25
  • 机器人占领就业市场后:人类还能从事这些工作 2019-03-04
  • 以网络文化建设推进文化惠民 2019-03-03
  • 贸易战,只能是双输。我们是众志成城,美国却不一定。 2019-02-26
  • 辣评2016年9月最HOT 轿车获奖榜单 2019-02-22
  • 交通运输部路网中心:端午假期高速通行不免费 2019-02-18
  • 南粤风采36选7开奖公告: 码农亚 VR填坑之——UIClip(小议)

    29
    回复
    3149
    查看
    打印 上一主题 下一主题
    [ 复制链接 ]
    排名
    2715
    昨日变化

    福建36选7和值走势图 www.00-na.com 12

    主题

    129

    帖子

    1185

    积分

    Rank: 9Rank: 9Rank: 9

    UID
    251813
    好友
    4
    蛮牛币
    2175
    威望
    0
    注册时间
    2017-10-31
    在线时间
    489 小时
    最后登录
    2019-4-24

    专栏作家活力之星

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有帐号?注册帐号

    x
    本帖最后由 码农亚 于 2018-12-10 15:32 编辑

    1.最近因为某些原因,跳到了另外一家公司,当前的环境基本上就是主要开始进行虚拟项目桌面软件(exe)的基本创建。
    2.显示模式有两种:普通PC版以及VR版本(包括但不限于HTC Vive),以下简称PC以及VR
    3.当然,两种项目之间的切换是必然要做的,不过此处并非是要进行所谓切换模式方法的管理。而是缩小一些,探讨小坑。
    4.PC模式下,UI是2维的,而相关的UIClip在Camera的管理下,基本的逻辑是被裁剪而无法看到的???,相关方法不被激活。
       然而,VR模式下,UI是三维的,并且需要添加BoxCollider???。
       相关的VRCamera??榈鼻安⑽慈缤琍C端一般.(被裁剪无法看到,但是本身是Active状态的话,射线依旧会检测,依旧有检测事件).
    5.所以,就需要对相关的方法进行调整
       调整的方法有很多,我这里写出来我自己的一种简略尝试:
       假设有10个物体,当前只会显示的其中3个
       初始:123激活,其它不激活
       按下右键:234激活,其它不激活
       再按下右键:345激活,其它不激活
       按下左键会有相应的当前激活位置向左移动一个位置
       当然,关于坐标变化以及边缘限定是要考虑的方面之一截图:






    [C#] 纯文本查看 复制代码
    using DG.Tweening;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    //裁剪基本变化,消除左右不一致的相关Bug
    public class UIClipManager : MonoBehaviour {
    
        public List<GameObject> allObjs;
        public GameObject _father;
        public float _fatherXvalue = -564f;
        public float _identityValue = 160f;
        public float _moveValue = 0.5f;
        int dex = 1;
        void Start()
        {//012
         //123
         //234
         //前三个显示
            TheStartSee();
        }
        // Update is called once per frame
        void Update()
        {
            //if (Input.GetKeyDown(KeyCode.R))
            //{
            //    if (dex + 2 < allObjs.Count)
            //    {
            //        RightMove(dex + 1);
            //        TheMainRightManager(dex + 1);
            //    }
    
            //}
            //if (Input.GetKeyDown(KeyCode.L))
            //{
            //    if (dex - 2 > -1)
            //    {
            //        LeftMove();
            //        TheMainLeftManager(dex - 1);
            //    }
            //}
        }
        void TheRightSee(int _value)
        {
            dex += 1;
    
        }
       
        void TheStartSee()
        {
            int startNum = 1;
            for (int i = 0; i < allObjs.Count; i++)
            {
                if (i == startNum - 1 || i == startNum || i == startNum + 1)
                {
                    allObjs[i].SetActive(true);
                }
            }
        }
        public void FinalRight()
        {
            if (dex + 2 < allObjs.Count)
            {
                RightMove(dex + 1);
                TheMainRightManager(dex + 1);
            }
        }
        public void FinalLeft()
        {
            if (dex - 2 > -1)
            {
                LeftMove();
                TheMainLeftManager(dex - 1);
            }
        }
        public void TheMainRightManager(int _startValue)
        {
            //dex+=1;
            Debug.Log("基础标志" + _startValue);
            for (int i = 0; i < allObjs.Count; i++)
            {
                if (i == _startValue - 1 || i == _startValue || i == _startValue + 1)
                {
                    allObjs[i].SetActive(true);
                  
                }
            }
            if (dex - 1 >= 0)
            {
              
                allObjs[dex - 1].SetActive(false);
            }
            dex += 1;
            Debug.Log("第一个" + (dex - 1).ToString() + "第二个" + (dex).ToString() + "第三个" + (dex + 1).ToString());
        }
        public void TheMainLeftManager(int _startValue)
        {
            for (int i = 0; i < allObjs.Count; i++)
            {
                if (i == _startValue - 1 || i == _startValue || i == _startValue + 1)
                {
                    allObjs[i].SetActive(true);
                }
            }
            if (dex + 1 < allObjs.Count)
            {
                allObjs[dex + 1].SetActive(false);
            }
            dex -= 1;
            Debug.Log("第一个" + (dex - 1).ToString() + "第二个" + (dex).ToString() + "第三个" + (dex + 1).ToString());
        }
        void RightMove(int _value)
        {
            Debug.Log(_value);
            if (_value >= 2 && _value <= allObjs.Count - 2)
            {
                 float _rightVec = _fatherXvalue - (_value - 1) * _identityValue;
                _father.transform.GetComponent<RectTransform>().DOLocalMoveX(_rightVec, _moveValue).OnComplete(
                    () => {
                        if (_father.transform.GetComponent<RectTransform>().localPosition.x!=_rightVec )
                        {
                            _father.transform.GetComponent<RectTransform>().localPosition = new Vector3(_rightVec, _father.transform.localPosition.y, _father.transform.localPosition.z);
                        }
                    }
                    );
            }
        }
        void LeftMove()
        {
           
            if (dex - 2 > -1 && dex + 1 < allObjs.Count)
            {
                float _leftVec = _father.transform.GetComponent<RectTransform>().localPosition.x +_identityValue;
                // TheMainLeftManager(dex - 1);
               _father.transform.GetComponent<RectTransform>().DOLocalMoveX(_leftVec, _moveValue).OnComplete(() => {
                   if (_father.transform.GetComponent<RectTransform>().localPosition.x != _leftVec)
                   {
                       _father.transform.GetComponent<RectTransform>().localPosition = new Vector3(_leftVec, _father.transform.localPosition.y, _father.transform.localPosition.z);
                   }
    
               });
            }
    
        }
    }


    以上是我的相关主要方法,里面有我一些思维痕迹
    下面就是简单项目原文件
    RomanticCute09.zip (4.03 MB, 下载次数: 39, 售价: 1 蛮牛币)
    最近项目比较忙,看时间更新,就这样。
    大家快乐!

    排名
    2715
    昨日变化

    12

    主题

    129

    帖子

    1185

    积分

    Rank: 9Rank: 9Rank: 9

    UID
    251813
    好友
    4
    蛮牛币
    2175
    威望
    0
    注册时间
    2017-10-31
    在线时间
    489 小时
    最后登录
    2019-4-24

    专栏作家活力之星

    沙发
    楼主 2018-12-10 15:36:28 只看该作者
    本帖最后由 码农亚 于 2019-3-25 07:39 编辑

    当前案例是Unity5.5基础上创建的,本身依旧含有左右跳转太快某些时候位置无法正确规整的问题,解决办法实在是很多,大家开动脑筋想想就是。
    [C#] 纯文本查看 复制代码
    using DG.Tweening;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    //裁剪基本变化,消除左右不一致的相关Bug
    public class UIClipManager : MonoBehaviour {
    
        public List<GameObject> allObjs;
        public GameObject _father;
        public float _fatherXvalue = -564f;
        public float _identityValue = 160f;
        public float _moveValue = 0.5f;
        public int  _currentIndex = 1;
        int dex = 1;
        void Start()
        {//012
         //123
         //234
         //前三个显示
            TheStartSee();
        }
        // Update is called once per frame
        void Update()
        {
            //if (Input.GetKeyDown(KeyCode.R))
            //{
            //    if (dex + 2 < allObjs.Count)
            //    {
            //        RightMove(dex + 1);
            //        TheMainRightManager(dex + 1);
            //    }
    
            //}
            //if (Input.GetKeyDown(KeyCode.L))
            //{
            //    if (dex - 2 > -1)
            //    {
            //        LeftMove();
            //        TheMainLeftManager(dex - 1);
            //    }
            //}
        }
        void TheRightSee(int _value)
        {
            dex += 1;
    
        }
       
        void TheStartSee()
        {
            int startNum = 1;
            for (int i = 0; i < allObjs.Count; i++)
            {
                if (i == startNum - 1 || i == startNum || i == startNum + 1)
                {
                    allObjs[i].SetActive(true);
                }
            }
        }
        public void FinalRight()
        {
            if (dex + 2 < allObjs.Count)
            {
                RightMove(dex + 1);
                TheMainRightManager(dex + 1);
            }
        }
        public void FinalLeft()
        {
            if (dex - 2 > -1)
            {
                LeftMove();
                TheMainLeftManager(dex - 1);
            }
        }
        public void TheMainRightManager(int _startValue)
        {
            //dex+=1;
            Debug.Log("基础标志" + _startValue);
            for (int i = 0; i < allObjs.Count; i++)
            {
                if (i == _startValue - 1 || i == _startValue || i == _startValue + 1)
                {
                    allObjs[i].SetActive(true);
                  
                }
            }
            if (dex - 1 >= 0)
            {
              
                allObjs[dex - 1].SetActive(false);
            }
            dex += 1;
            _currentIndex = dex;
            Debug.Log("第一个" + (dex - 1).ToString() + "第二个" + (dex).ToString() + "第三个" + (dex + 1).ToString());
        }
        public void TheMainLeftManager(int _startValue)
        {
            for (int i = 0; i < allObjs.Count; i++)
            {
                if (i == _startValue - 1 || i == _startValue || i == _startValue + 1)
                {
                    allObjs[i].SetActive(true);
                }
            }
            if (dex + 1 < allObjs.Count)
            {
                allObjs[dex + 1].SetActive(false);
            }
            dex -= 1;
            _currentIndex = dex;
            Debug.Log("第一个" + (dex - 1).ToString() + "第二个" + (dex).ToString() + "第三个" + (dex + 1).ToString());
        }
        void RightMove(int _value)
        {
            Debug.Log(_value);
            if (_value >= 2 && _value <= allObjs.Count - 2)
            {
                 float _rightVec = _fatherXvalue - (_value - 1) * _identityValue;
                _father.transform.GetComponent<RectTransform>().DOLocalMoveX(_rightVec, _moveValue).OnComplete(
                    () => {
                        if (_father.transform.GetComponent<RectTransform>().localPosition.x!=_rightVec )
                        {
                            _father.transform.GetComponent<RectTransform>().localPosition = new Vector3(_rightVec, _father.transform.localPosition.y, _father.transform.localPosition.z);
                        }
                    }
                    );
            }
        }
        void LeftMove()
        {
           
            if (dex - 2 > -1 && dex + 1 < allObjs.Count)
            {
                //float _leftVec = (_father.transform.GetComponent<RectTransform>().localPosition.x +_identityValue);
                //测试
                float _leftVec = CurrentLeftDex(_currentIndex);
                // TheMainLeftManager(dex - 1);
                Debug.Log("左边的目标迁移量" + _leftVec);
               _father.transform.GetComponent<RectTransform>().DOLocalMoveX(_leftVec, _moveValue).OnComplete(() => {
                   if (_father.transform.GetComponent<RectTransform>().localPosition.x != _leftVec)
                   {
                       _father.transform.GetComponent<RectTransform>().localPosition = new Vector3(_leftVec, _father.transform.localPosition.y, _father.transform.localPosition.z);
                   }
    
               });
            }
    
        }
        float  CurrentLeftDex(int _value)
        {
            
            float _rightVec = _fatherXvalue - (_value-2) * _identityValue;
            //_fatherXvalue
            return _rightVec;
        }
    }


    这是我自己做的修正,希望大家有所借鉴!
    4四处流浪
    324/500
    排名
    10342
    昨日变化

    0

    主题

    143

    帖子

    324

    积分

    Rank: 4

    UID
    248391
    好友
    0
    蛮牛币
    223
    威望
    0
    注册时间
    2017-10-12
    在线时间
    71 小时
    最后登录
    2019-2-20
    板凳
    2018-12-10 17:32:00 只看该作者
    7日久生情
    2233/5000
    排名
    1394
    昨日变化

    0

    主题

    693

    帖子

    2233

    积分

    Rank: 7Rank: 7Rank: 7Rank: 7

    UID
    135463
    好友
    0
    蛮牛币
    174
    威望
    0
    注册时间
    2016-1-23
    在线时间
    650 小时
    最后登录
    2019-4-25
    地板
    2018-12-10 17:34:03 只看该作者
    gfjgcjgfjghjhgjhgj
    7日久生情
    2233/5000
    排名
    1394
    昨日变化

    0

    主题

    693

    帖子

    2233

    积分

    Rank: 7Rank: 7Rank: 7Rank: 7

    UID
    135463
    好友
    0
    蛮牛币
    174
    威望
    0
    注册时间
    2016-1-23
    在线时间
    650 小时
    最后登录
    2019-4-25
    5#
    2018-12-11 18:48:20 只看该作者
    6666666666666666666
    5熟悉之中
    848/1000
    排名
    5174
    昨日变化

    1

    主题

    295

    帖子

    848

    积分

    Rank: 5Rank: 5

    UID
    258102
    好友
    1
    蛮牛币
    1100
    威望
    0
    注册时间
    2017-12-6
    在线时间
    274 小时
    最后登录
    2019-4-25
    6#
    2018-12-12 08:16:23 只看该作者
    7日久生情
    2295/5000
    排名
    2248
    昨日变化

    0

    主题

    1286

    帖子

    2295

    积分

    Rank: 7Rank: 7Rank: 7Rank: 7

    UID
    189581
    好友
    0
    蛮牛币
    3447
    威望
    0
    注册时间
    2016-12-5
    在线时间
    383 小时
    最后登录
    2019-4-25
    7#
    2018-12-12 09:27:43 只看该作者
    可以的不错啊
    7日久生情
    1914/5000
    排名
    2252
    昨日变化

    0

    主题

    679

    帖子

    1914

    积分

    Rank: 7Rank: 7Rank: 7Rank: 7

    UID
    163777
    好友
    2
    蛮牛币
    483
    威望
    0
    注册时间
    2017-2-27
    在线时间
    611 小时
    最后登录
    2019-4-25
    8#
    2018-12-12 10:10:15 只看该作者
    挺不错的,学习一下
    排名
    39856
    昨日变化

    0

    主题

    7

    帖子

    17

    积分

    Rank: 1

    UID
    305451
    好友
    0
    蛮牛币
    4
    威望
    0
    注册时间
    2018-11-21
    在线时间
    4 小时
    最后登录
    2018-12-14
    9#
    2018-12-12 13:42:12 只看该作者
    受教
    2初来乍到
    143/150
    排名
    22151
    昨日变化

    0

    主题

    86

    帖子

    143

    积分

    Rank: 2Rank: 2

    UID
    252110
    好友
    0
    蛮牛币
    198
    威望
    0
    注册时间
    2017-11-2
    在线时间
    35 小时
    最后登录
    2019-3-8
    10#
    2018-12-12 15:39:07 只看该作者
    {:106:}{:106:}
    7日久生情
    2233/5000
    排名
    1394
    昨日变化

    0

    主题

    693

    帖子

    2233

    积分

    Rank: 7Rank: 7Rank: 7Rank: 7

    UID
    135463
    好友
    0
    蛮牛币
    174
    威望
    0
    注册时间
    2016-1-23
    在线时间
    650 小时
    最后登录
    2019-4-25
    11#
    2018-12-12 17:54:20 只看该作者
    666666666666666666666666
    7日久生情
    1709/5000
    排名
    1990
    昨日变化

    5

    主题

    516

    帖子

    1709

    积分

    Rank: 7Rank: 7Rank: 7Rank: 7

    UID
    54335
    好友
    2
    蛮牛币
    5531
    威望
    0
    注册时间
    2014-11-9
    在线时间
    506 小时
    最后登录
    2019-4-25
    12#
    2018-12-13 09:06:00 只看该作者
    5熟悉之中
    686/1000
    排名
    5235
    昨日变化

    2

    主题

    197

    帖子

    686

    积分

    Rank: 5Rank: 5

    UID
    208267
    好友
    0
    蛮牛币
    1449
    威望
    0
    注册时间
    2017-2-24
    在线时间
    213 小时
    最后登录
    2019-4-25
    13#
    2018-12-13 10:08:18 只看该作者
    前方迷途太多
    4四处流浪
    497/500
    排名
    9488
    昨日变化

    0

    主题

    237

    帖子

    497

    积分

    Rank: 4

    UID
    301614
    好友
    0
    蛮牛币
    522
    威望
    0
    注册时间
    2018-10-29
    在线时间
    140 小时
    最后登录
    2019-4-25
    14#
    2018-12-13 11:28:43 只看该作者
    3偶尔光临
    247/300
    排名
    11986
    昨日变化

    0

    主题

    120

    帖子

    247

    积分

    Rank: 3Rank: 3Rank: 3

    UID
    272742
    好友
    0
    蛮牛币
    86
    威望
    0
    注册时间
    2018-3-16
    在线时间
    47 小时
    最后登录
    2019-3-28
    15#
    2018-12-13 18:11:29 只看该作者
    您需要登录后才可以回帖 登录 | 注册帐号

    本版积分规则

  • 96次航拍峨眉 换个角度看巴蜀名山 中国国家地理网 2019-04-23
  • 俄罗斯电影《最后一球》定档落魄球星遇上菜鸟球队 2019-04-21
  • 【理上网来·辉煌十九大】缅甸资深媒体人高度评价习近平十九大报告:立意高远 内涵丰富 2019-04-21
  • 特朗普和金正恩先后抵达嘉佩乐酒店 会晤即将开始 2019-04-17
  • 中国侨联直属机关党委举办党务干部培训班 2019-04-17
  • 上海合作组织青岛峰会举行 2019-04-07
  • IT热点小度智能音箱发布 新飞电器破产拍卖 2019-04-04
  • 台州公务员管理再也不用“往返跑”了!“最多跑一次”撬动组织人事改革 全省首个试点 2019-04-03
  • 我要讨干嘛?姜太公钓鱼,愿者上钩。 2019-04-03
  • 新疆花开天山南北 笑迎八方来客 2019-03-25
  • 机器人占领就业市场后:人类还能从事这些工作 2019-03-04
  • 以网络文化建设推进文化惠民 2019-03-03
  • 贸易战,只能是双输。我们是众志成城,美国却不一定。 2019-02-26
  • 辣评2016年9月最HOT 轿车获奖榜单 2019-02-22
  • 交通运输部路网中心:端午假期高速通行不免费 2019-02-18