送彩金的娱乐城新宝娱乐城: 码农亚 VR填坑之——UIClip(小议)

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

新宝娱乐城博彩打不开 www.sl6cl.com.cn 12

主题

130

帖子

1199

积分

Rank: 9Rank: 9Rank: 9

UID
251813
好友
4
蛮牛币
2172
威望
0
注册时间
2017-10-31
在线时间
502 小时
最后登录
2019-5-22

专栏作家活力之星

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

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

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 蛮牛币)
最近项目比较忙,看时间更新,就这样。
大家快乐!

排名
2714
昨日变化

12

主题

130

帖子

1199

积分

Rank: 9Rank: 9Rank: 9

UID
251813
好友
4
蛮牛币
2172
威望
0
注册时间
2017-10-31
在线时间
502 小时
最后登录
2019-5-22

专栏作家活力之星

沙发
楼主 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四处流浪
327/500
排名
10342
昨日变化

0

主题

144

帖子

327

积分

Rank: 4

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

0

主题

699

帖子

2255

积分

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

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

0

主题

699

帖子

2255

积分

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

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

1

主题

301

帖子

874

积分

Rank: 5Rank: 5

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

0

主题

1285

帖子

2301

积分

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

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

0

主题

818

帖子

2099

积分

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

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

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初来乍到
144/150
排名
22151
昨日变化

0

主题

86

帖子

144

积分

Rank: 2Rank: 2

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

0

主题

699

帖子

2255

积分

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

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

6

主题

531

帖子

1753

积分

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

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

2

主题

197

帖子

699

积分

Rank: 5Rank: 5

UID
208267
好友
0
蛮牛币
1524
威望
0
注册时间
2017-2-24
在线时间
226 小时
最后登录
2019-5-22
13#
2018-12-13 10:08:18 只看该作者
前方迷途太多
5熟悉之中
506/1000
排名
9487
昨日变化

0

主题

237

帖子

506

积分

Rank: 5Rank: 5

UID
301614
好友
0
蛮牛币
552
威望
0
注册时间
2018-10-29
在线时间
149 小时
最后登录
2019-5-22
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 只看该作者
您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

  • 中国智能手机在东南亚受追捧 2019-05-22
  • 一语惊坛(5月10日):半岛和平,是中朝两国的共同愿望。 2019-05-22
  • 董卿白岩松朱广权 看看央视主持人大学就读啥院系 2019-05-21
  • 邓超陈冠希焦恩俊,刷新娱乐圈女儿奴新高度 2019-05-21
  • 紫光阁中共中央国家机关工作委员会 2019-05-20
  • 四个跌停后 金洲慈航不惜食言也要选择如此停牌自救 2019-05-19
  • 无论是否想怀孕 这串数字女性要知道 2019-05-18
  • 机遇与挑战并存 中国企业“走出去”行稳致远 2019-05-17
  • 中国算是世界杯中最能长期保持着稳定成绩的一个了。 2019-05-17
  • 回复@笑傲江湖V:中国人啥不炒?君子兰、普洱茶、大蒜……凡事保存周期比较长的都有人炒,跟市场经济充不充分有啥关系? 2019-05-16
  • 特朗普威胁中国,如果中国报复性征收美国高关税,美国将征收中国额外关税,特朗普真流氓。难道中国是吓大的? 2019-05-15
  • 那请你具体的指出,中国现在哪一个人不是中国人? 2019-05-15
  • 劳动不是人的本质,对劳动成果即社会财富的占有才是人的本质。在私有制阶级社会中,劳动成果即社会财富被剥削阶级无偿占有,所以人的本质便表现为阶级本质,“每... 2019-05-14
  • 丰富产品序列 曝力帆轩朗纯电动申报图 2019-05-14
  • 把党的领导贯穿军事科研工作各方面和全过程 2019-05-13
  • 177| 504| 122| 445| 27| 473| 279| 539| 762| 838|