unity dropdown options 怎么改

unity dropdown options 怎么改,第1张

using System.Collections

using System.Collections.Generic

using UnityEngine

using UnityEngine.UI

public class DropDownQ : MonoBehaviour {

    Dropdown Dd

    List<string> options = new List<string>()

// Use this for initialization

void Start () {

        Dd = GetComponent<Dropdown>()

        Dd.ClearOptions() //清除当前默认选项

        ///新加几个选项

        options.Add("1")

        options.Add("2")

        options.Add("3")

        Dd.AddOptions(options)

}

// Update is called once per frame

void Update () {

}

}

建个DropDown 把这个脚本贴上去看一下就明白了

不多说,先看看效果把!

在iview中Table表格中有一个列描述数据对象(render),render是 columns 中的一项,自定义渲染列,使用 Vue 的 Render 函数。传入两个参数,第一个是 h,第二个为对象,包含 row、column 和 index,分别指当前行数据,当前列数据,当前行索引。

当然官网提供一个简单的使用方法: iView - A high quality UI Toolkit based on Vue.js

现在我们来实现,添加一个Dropdown 下拉菜单:

这里要注意下我描述的,1,2,3,4点,先不急,咱们先看下官网这个Dropdown组件

不难看出,讲一个组件写成render其实很简单,只需要写成这样

最后就是要注意下,绑定事件了,这里的on要写成nativeOn,才可以出发事件。

不知道  小伙伴看懂了原理吗?不明白就留言,我会及时回复你的。

在基于 Unity 的数字孪生应用开发中,经常有按下鼠标拖拽以旋转视野的需求,有时候我们发现在拖拽 Slider、Dropdown ,ScrollRect 时,UI下的视野也在旋转。

于是,在鼠标按下时判定是否是 UI 的需求便提上日程:按下时发现是 UI 就不旋转视野呗!

那么,如何判断鼠标按下时光标下面是 UI 呢,为什么说网络上流传的 EventSystem.current.IsPointerOverGameObject() 它就不香呢,笔者又有什么好的方式方法呢?

为什么说网络上流传的 EventSystem.current.IsPointerOverGameObject() 它不香?

答: 因为这个 API 获得的是最后一次 Raycaster 打到的 “EventSystem object” ,所以不能保证射线打到的是 UI 组件!

不是 UI 组件,那又会是什么组件?

答: 是能被 BaseRaycaster 打中的所有组件,亦即是能被 GraphicRaycaster、 PhysicsRaycaster 打中的组件,是 Unity 口中的 “EventSystem object”。

结论:

PhysicsRaycaster 是与场景中 3d 物体交互的,继而可得: IsPointerOverGameObject 方法打中的不一定是UI。

于是,场景中的对象如继承了形如: IPointerXXXHandler 类似的接口,鼠标按在了这类物体上,程序就会误以为是 UI,那视野旋转逻辑是不是就紊乱了?

在鼠标按下时,通过 EventSystem.RaycastAll 捕捉全部 "EventSystem object",然后判断列表第一个 data.module 类型, 如果是 GraphicRaycaster , 打中的是UI。

Talk is cheap, Show me the code!

使用实例见仓库: Github托管


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11417773.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存