Comment prendre en charge les stylets Surface dans Unity?

18

Notre jeu fonctionne très bien avec le toucher ou la souris, mais le stylet Surface ne semble pas du tout s'enregistrer comme périphérique de pointage. Comment prendre en charge le stylet dans Unity dans une version native?

Cette question sur le site Unity Answers suggère que nous pourrions la construire en tant qu'application UWP, mais cela signifie nous limiter à un sous-ensemble très limité du cadre .NET (en particulier, nous perdons beaucoup de bibliothèques de sérialisation).

Gregory Avery-Weir
la source
Pouvez-vous simplement le traiter comme une entrée tactile?
Evorlor
@Everlor, il ne s'enregistre pas sur Unity comme entrée tactile. Si vous savez comment y parvenir, ce serait génial.
Gregory Avery-Weir
@ArcaneEngineer Je ne suis pas sûr; en ce moment (1) semble très délicat et je ne sais pas du tout comment faire (2). La prise en charge de l'un des systèmes d'entrée intégrés d'un système d'exploitation ne semble pas être particulièrement difficile, mais je ne parviens pas du tout à y trouver des ressources.
Gregory Avery-Weir
2
Je n'ai trouvé aucune réponse ailleurs, comme toi. Pour (2), vous auriez besoin d'une DLL appelée par votre application Unity, ou d'un service Windows (ou d'une application Win si un service ne fait pas le travail) fonctionnant avec votre application. Vous devez récupérer les entrées de ce service / application, à partir de l'API Microsoft appropriée (Pen, je pense) et acheminer ces données vers votre application Unity via IPC . La connexion de DLL à Unity direct semble plus facile. Mais pourrait-il avoir accès à l'API en question? - Je ne suis pas sûr.
Ingénieur

Réponses:

0

Sur mon SP3, le stylet fonctionne avec https://docs.unity3d.com/ScriptReference/Input-mousePosition.html et renvoie un Vector3 avec les coordonnées x, y et 0z. J'utilise Unity 5.6 sous Linux mais si le stylet n'apparaît pas comme une entrée tactile dans Windows, je suppose qu'il a le même comportement.

user3362964
la source
3
Ceci est un commentaire, pas une réponse à la question qui est: "Comment pouvons-nous prendre en charge le stylet dans Unity dans une version native?" .
Ingénieur
1
Je n'ai pas assez de représentant pour commenter la question et cela fonctionne. J'ai à nouveau testé cela avec un SP3 avec Windows 10 et Unity 5.2 et il signalait correctement l'emplacement du stylet de surface comme s'il s'agissait d'une souris.
user3362964
Impressionnant! La position du stylet est effectivement signalée, mais je ne m'en suis pas rendu compte car les tapotements du stylet ne sont pas enregistrés comme des clics de souris. Avez-vous une idée de la façon de reconnaître les tapotements du stylet comme des clics de souris (ou toute sorte d'entrée)?
Gregory Avery-Weir
1
Vous pourriez peut-être faire quelque chose de hacky en détectant quand le stylet cesse de bouger, mais je n'ai rien trouvé dans l'api d'entrée Unity qui détecte correctement les taps. Je pense que vous devez utiliser l'une des suggestions de @Arcane Engineer et utiliser quelque chose d'extérieur qui transmet les données à votre jeu.
user3362964