SDL2-CS GetKeyboardState IntPtr到字节数组

问题描述

我在项目中使用SDL2,并在使用C#绑定。我正在尝试从GetKeyboardState()函数中获取键扫描代码的UInt8 / Byte数组。但是,无论何时尝试,它只会返回0。

我想知道其他人是否也有类似的经历,或者您是否知道我的代码有什么问题?

该数组作为IntPtr返回,因此是不安全的代码。 (我不确定是否应该使用Marshal.Copy()函数)

 public bool GetKey(SDL.SDL_Keycode _keycode)
        {

            int arraySize;
            bool isKeyPressed = false;
            byte keycode = (byte)SDL.SDL_GetScancodeFromKey(_keycode);
            bool found = false;
            unsafe
            {
                var KeyState = (byte*) SDL.SDL_GetKeyboardState(out arraySize);
                for (int i = 0; i < arraySize; ++i)
                {
                    isKeyPressed = KeyState[i] == keycode;
                }
            }

            return isKeyPressed;
        }

对于不知道SDL2-CS是什么或SDL2是什么,但仍想帮助的人,以下是相关链接:

https://github.com/flibitijibibo/SDL2-CS

https://wiki.libsdl.org/

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)