KeyBinding is not supported in Unity?
Hello,
I added some code below into the MainMenu.xaml under the sample Menu3D
<UserControl.InputBindings>
<KeyBinding Command="{Binding Start}" Key="A"></KeyBinding>
</UserControl.InputBindings>
It can work in WPF, but in Unity I got some errors:
NoesisException: Unable to convert 'A' to a valid value for property KeyBinding.Key (@10,8)
Noesis.Error.Check () (at Assets/NoesisGUI/Plugins/API/Core/NoesisError.cs:21)
Noesis.Extend.Noesis_InstantiateExtend_ (IntPtr nativeType) (at Assets/NoesisGUI/Plugins/API/Core/NoesisExtendImports.cs:26)
Noesis.Extend.NewCPtr (System.Type type, System.Object instance) (at Assets/NoesisGUI/Plugins/API/Core/NoesisExtend.cs:3829)
Noesis.Extend.GetInstanceHandle (System.Object instance) (at Assets/NoesisGUI/Plugins/API/Core/NoesisExtend.cs:4210)
Noesis.Extend.ProviderLoadXaml (IntPtr cPtr, System.String filename) (at Assets/NoesisGUI/Plugins/API/Core/NoesisExtend.cs:2598)
UnityEngine.Debug:LogException(Exception)
Noesis.Error:SetNativePendingError(Exception) (at Assets/NoesisGUI/Plugins/API/Core/NoesisError.cs:40)
Noesis.Extend:ProviderLoadXaml(IntPtr, String) (at Assets/NoesisGUI/Plugins/API/Core/NoesisExtend.cs:2605)
Noesis.GUI:Noesis_LoadComponent(HandleRef, String)
Noesis.GUI:Noesis_LoadComponent_(HandleRef, String) (at Assets/NoesisGUI/Plugins/API/Core/NoesisGUI.cs:269)
Noesis.GUI:LoadComponent(Object, String) (at Assets/NoesisGUI/Plugins/API/Core/NoesisGUI.cs:130)
Menu3D.MainMenu:InitializeComponent() (at Assets/MainMenu.xaml.cs:40)
Menu3D.MainMenu:.ctor() (at Assets/MainMenu.xaml.cs:24)
System.Runtime.CompilerServices.ExecutionScope:lambda_method(ExecutionScope)
Noesis.Extend:CreateInstance(IntPtr, IntPtr) (at Assets/NoesisGUI/Plugins/API/Core/NoesisExtend.cs:3866)
Noesis.GUI:Noesis_LoadComponent(HandleRef, String)
Noesis.GUI:Noesis_LoadComponent_(HandleRef, String) (at Assets/NoesisGUI/Plugins/API/Core/NoesisGUI.cs:269)
Noesis.GUI:LoadComponent(Object, String) (at Assets/NoesisGUI/Plugins/API/Core/NoesisGUI.cs:130)
Menu3D.MainWindow:InitializeComponent() (at Assets/MainWindow.xaml.cs:26)
Menu3D.MainWindow:.ctor() (at Assets/MainWindow.xaml.cs:20)
System.Runtime.CompilerServices.ExecutionScope:lambda_method(ExecutionScope)
Noesis.Extend:CreateInstance(IntPtr, IntPtr) (at Assets/NoesisGUI/Plugins/API/Core/NoesisExtend.cs:3866)
Noesis.GUI:Noesis_LoadXaml(String)
Noesis.GUI:Noesis_LoadXaml_(String) (at Assets/NoesisGUI/Plugins/API/Core/NoesisGUI.cs:262)
Noesis.GUI:LoadXaml(String) (at Assets/NoesisGUI/Plugins/API/Core/NoesisGUI.cs:120)
NoesisXaml:Load() (at Assets/NoesisGUI/Plugins/NoesisXaml.cs:31)
NoesisView:LoadXaml(Boolean) (at Assets/NoesisGUI/Plugins/NoesisView.cs:303)
NoesisView:OnEnable() (at Assets/NoesisGUI/Plugins/NoesisView.cs:365)
Unity 5.6.0f3
NoesisGUI-2.0.2f2
Edit:
I found the code below is not supported after switching from WPF to Unity
_start.InputBindings.Add(new KeyBinding(((MenuModel)this.DataContext).Start, Key.Enter, ModifierKeys.None));
I don't know why Noesis.KeyBinding's property Key and Modifiers is readonly, and can't set them from constructor?
I added some code below into the MainMenu.xaml under the sample Menu3D
<UserControl.InputBindings>
<KeyBinding Command="{Binding Start}" Key="A"></KeyBinding>
</UserControl.InputBindings>
It can work in WPF, but in Unity I got some errors:
NoesisException: Unable to convert 'A' to a valid value for property KeyBinding.Key (@10,8)
Noesis.Error.Check () (at Assets/NoesisGUI/Plugins/API/Core/NoesisError.cs:21)
Noesis.Extend.Noesis_InstantiateExtend_ (IntPtr nativeType) (at Assets/NoesisGUI/Plugins/API/Core/NoesisExtendImports.cs:26)
Noesis.Extend.NewCPtr (System.Type type, System.Object instance) (at Assets/NoesisGUI/Plugins/API/Core/NoesisExtend.cs:3829)
Noesis.Extend.GetInstanceHandle (System.Object instance) (at Assets/NoesisGUI/Plugins/API/Core/NoesisExtend.cs:4210)
Noesis.Extend.ProviderLoadXaml (IntPtr cPtr, System.String filename) (at Assets/NoesisGUI/Plugins/API/Core/NoesisExtend.cs:2598)
UnityEngine.Debug:LogException(Exception)
Noesis.Error:SetNativePendingError(Exception) (at Assets/NoesisGUI/Plugins/API/Core/NoesisError.cs:40)
Noesis.Extend:ProviderLoadXaml(IntPtr, String) (at Assets/NoesisGUI/Plugins/API/Core/NoesisExtend.cs:2605)
Noesis.GUI:Noesis_LoadComponent(HandleRef, String)
Noesis.GUI:Noesis_LoadComponent_(HandleRef, String) (at Assets/NoesisGUI/Plugins/API/Core/NoesisGUI.cs:269)
Noesis.GUI:LoadComponent(Object, String) (at Assets/NoesisGUI/Plugins/API/Core/NoesisGUI.cs:130)
Menu3D.MainMenu:InitializeComponent() (at Assets/MainMenu.xaml.cs:40)
Menu3D.MainMenu:.ctor() (at Assets/MainMenu.xaml.cs:24)
System.Runtime.CompilerServices.ExecutionScope:lambda_method(ExecutionScope)
Noesis.Extend:CreateInstance(IntPtr, IntPtr) (at Assets/NoesisGUI/Plugins/API/Core/NoesisExtend.cs:3866)
Noesis.GUI:Noesis_LoadComponent(HandleRef, String)
Noesis.GUI:Noesis_LoadComponent_(HandleRef, String) (at Assets/NoesisGUI/Plugins/API/Core/NoesisGUI.cs:269)
Noesis.GUI:LoadComponent(Object, String) (at Assets/NoesisGUI/Plugins/API/Core/NoesisGUI.cs:130)
Menu3D.MainWindow:InitializeComponent() (at Assets/MainWindow.xaml.cs:26)
Menu3D.MainWindow:.ctor() (at Assets/MainWindow.xaml.cs:20)
System.Runtime.CompilerServices.ExecutionScope:lambda_method(ExecutionScope)
Noesis.Extend:CreateInstance(IntPtr, IntPtr) (at Assets/NoesisGUI/Plugins/API/Core/NoesisExtend.cs:3866)
Noesis.GUI:Noesis_LoadXaml(String)
Noesis.GUI:Noesis_LoadXaml_(String) (at Assets/NoesisGUI/Plugins/API/Core/NoesisGUI.cs:262)
Noesis.GUI:LoadXaml(String) (at Assets/NoesisGUI/Plugins/API/Core/NoesisGUI.cs:120)
NoesisXaml:Load() (at Assets/NoesisGUI/Plugins/NoesisXaml.cs:31)
NoesisView:LoadXaml(Boolean) (at Assets/NoesisGUI/Plugins/NoesisView.cs:303)
NoesisView:OnEnable() (at Assets/NoesisGUI/Plugins/NoesisView.cs:365)
Unity 5.6.0f3
NoesisGUI-2.0.2f2
Edit:
I found the code below is not supported after switching from WPF to Unity
_start.InputBindings.Add(new KeyBinding(((MenuModel)this.DataContext).Start, Key.Enter, ModifierKeys.None));
I don't know why Noesis.KeyBinding's property Key and Modifiers is readonly, and can't set them from constructor?
-
sfernandez
Site Admin
- Posts: 3154
- Joined:
Re: KeyBinding is not supported in Unity?
Hi,
It is failing because we incorrectly implemented KeyBinding.Key and KeyBinding.Modifiers as read-only properties.
Please file a ticket in our bugtracker and we will fix it as soon as possible.
Meanwhile the workaround is using the Gesture property instead:
It is failing because we incorrectly implemented KeyBinding.Key and KeyBinding.Modifiers as read-only properties.
Please file a ticket in our bugtracker and we will fix it as soon as possible.
Meanwhile the workaround is using the Gesture property instead:
Code: Select all
<UserControl.InputBindings>
<KeyBinding Command="{Binding Start}" Gesture="A"></KeyBinding>
</UserControl.InputBindings>
Code: Select all
_start.InputBindings.Add(new KeyBinding
{
Command = ((MenuModel)this.DataContext).Start,
Gesture = new KeyGesture(Key.A, ModifierKeys.None)
});
Who is online
Users browsing this forum: Bing [Bot] and 2 guests