playmaker中通过动作状态添加最新的component TMP Dropdown 实现简易的二级菜单

修改playmaker中原先的UiDropDownAddOptions代码,这个原来只支持创建老版的dropdown这个component,现在用下面的代码覆盖原来的能创建新版的Dropdown-TextMeshPro这个component。并且能够配合其他操作,实现上一个下拉框选择后到这个下拉框的一种二级选择方式。清除原来的下拉框内容,更新新的下拉框选择。

#if UNITY_5_3 || UNITY_5_3_OR_NEWER
using UnityEngine;
using System.Collections.Generic;
using TMPro;

namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.UI)]
[Tooltip(“Add multiple options to the options of the Dropdown UI Component”)]
public class UiDropDownAddOptions : ComponentAction<TMP_Dropdown>
{
[RequiredField]
//[CheckForComponent(typeof(UnityEngine.UI.Dropdown))]
[CheckForComponent(typeof(TMPro.TMP_Dropdown))]
[Tooltip(“The GameObject with the UI DropDown component.”)]
public FsmOwnerDefault gameObject;

    [CompoundArray("Options", "Text", "Image")]
    [Tooltip("The text to use for this option.")]
    public FsmString[] optionText;
    [ObjectType(typeof(Sprite))]
    [Tooltip("The image to use for this option.")]
    public FsmObject[] optionImage;


    // private UnityEngine.UI.Dropdown dropDown;
    //private List<UnityEngine.UI.Dropdown.OptionData> options;
    private TMP_Dropdown dropDown;
    private List<TMP_Dropdown.OptionData> options;

    public override void Reset()
    {
        gameObject = null;
        optionText = new FsmString[1];
        optionImage = new FsmObject[1];
    }

    public override void OnEnter()
    {
        var go = Fsm.GetOwnerDefaultTarget(gameObject);
        if (UpdateCache(go))
        {
            dropDown = cachedComponent;
        }
        InitDropdown();
        DoAddOptions();

        Finish();
    }


    private void DoAddOptions()
    {
        if (dropDown == null) return;

        options = new List<TMP_Dropdown.OptionData>();

        for (var i = 0; i < optionText.Length; i++)
        {
            var text = optionText[i];
            options.Add(
                new TMP_Dropdown.OptionData
                {
                    text = text.Value,
                    image = optionImage[i].RawValue as Sprite
                }
            );
        }

        dropDown.AddOptions(options);
    }
   
        private void InitDropdown()
        {
        //清空默认节点
        dropDown.options.Clear();
        }

}

}
#endif

演示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Longyugxq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值