首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

unity inptsystem警告Unable to find style ‘ToolbarSeachTextField‘in skin ‘DarkSkin‘Used,导致listen被遮挡了

  • 25-03-02 10:22
  • 3485
  • 13648
blog.csdn.net

unity新版本的inptsystem输入系统插件界面有bug,按键映射的listen被挡住了,就像下图这样
在这里插入图片描述
原因特别搞笑,他就是单词拼错了,导致的bug。。。

如果你每次编译了第一次点击path时会发现,控制台报警告了
Unable to find style 'ToolbarSeachTextField'in skin 'DarkSkin'Used
在这里插入图片描述
双击进去看看
在这里插入图片描述
其实原因是ToolbarSearchTextField写出了ToolbarSeachTextField,你可以修改这个单词修复它
在这里插入图片描述
一次修改保存可能不会成功,修改两次再保存就可以了
在这里插入图片描述
因为是软件包的问题,改了后会发现内容保存在Library临时文件里,如果清除了Library临时文件,使用时每次又要重新来修改,很麻烦
在这里插入图片描述
所以我们可以通过书写编辑器代码通过反射进行修改,反射是一种在运行时检查类型、获取类型信息或者动态调用类型方法的能力。

#if ENABLE_INPUT_SYSTEM
using UnityEngine;
using UnityEditor;
using System;
using System.Reflection;
using UnityEngine.InputSystem;

// 初始化时加载此类
[InitializeOnLoad]
public class InputSystemAdvancedFixed : EditorWindow
{
    // 用于存储自定义样式的变量
    private static GUIStyle customToolbarSearchField;
    static FieldInfo toolbarSearchFieldInfo;

    // 静态构造函数,在编辑器加载时执行
    static InputSystemAdvancedFixed()
    {
        // 注册一个更新事件,以便在编辑器更新时执行相关操作
        EditorApplication.update += OnEditorUpdate;
    }

    // 编辑器更新时调用的方法
    static void OnEditorUpdate()
    {

        if (customToolbarSearchField == null)
        {
            // 确保编辑器已经完全初始化
            try
            {
                if (EditorStyles.label != null)
                {
                    CreateCustomStyle();
                    ReplaceAdvancedDropdownGUI();
                }
            }
            catch
            {

            }
        }
    }
    static void CreateCustomStyle()
    {
        customToolbarSearchField = "ToolbarSearchTextField";
    }

    static void ReplaceAdvancedDropdownGUI()
    {
        // 获取 Unity 输入系统的程序集
        Assembly inputSystemAssembly = typeof(InputSystem).Assembly;
        // 获取类型:通过 Assembly.GetType 方法获取 Unity 输入系统中的私有类型 AdvancedDropdownGUI 和它的嵌套类型 Styles
        Type advancedDropdownGUIType = inputSystemAssembly.GetType("UnityEngine.InputSystem.Editor.AdvancedDropdownGUI");
        Type stylesType = advancedDropdownGUIType.GetNestedType("Styles", BindingFlags.NonPublic);

        // 获取字段信息:使用 GetField 方法查找 Styles 类型中的 toolbarSearchField 字段。
        toolbarSearchFieldInfo = stylesType.GetField("toolbarSearchField", BindingFlags.Public | BindingFlags.Static);

        if (toolbarSearchFieldInfo != null)
        {
            try
            {
                // 设置字段值:通过 SetValue 方法动态地修改 toolbarSearchField 的值,将其设置为自定义样式。
                toolbarSearchFieldInfo.SetValue(null, customToolbarSearchField);
            }
            catch
            {

            }
        }
    }
}
#endif
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74

但是还是有缺点,每次编译都会执行,导致报警告,因为每次编译都要获取那个字段,然后引发的Warning,研究很久也没办法,这个是无法避免的,忽略即可

新增编辑器脚本,放在Editor文件夹下,注意一定要放在Editor文件夹下
在这里插入图片描述
好了,舒服了
在这里插入图片描述
ps:最新消息貌似这个问题在Unity6终于修复了

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述

向宇的客栈
QQ群名片
注:本文转载自blog.csdn.net的向宇it的文章"https://xiangyu.blog.csdn.net/article/details/142573006"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top