Как разрешить приложению доступ к этим веткам реестра?
Это решает не программист, а политики безопасности конкретного компа.
Обязательно ли для этого применять к приложению права администратора? (и если да - то как избавится от окна безопасности при каждом запуске приложения)
Необязательно - опять таки см. политики безопасности. Вы никак не избавитесь от окна безопасности со стороны приложения. Только со стороны конкретного компа.
Раз вы задаете такой вопрос - значит вы не свободно владеете этими языками.
Это означает что при написании любой задачи у вас не будет возникать вопроса "как реализовать это на этом ЯП". Если проводить аналогию с иностранными языками - вы сможете любую возникшую в вашей голове мысль сказать на иностранном языке. Суть свободного владения - при разработке язык разработки вас не тормозит. Тормозят сложности алгоритмов, структуры проекта или чего то подобного.
Откройте для себя VisualAssist/ReSharper. Крайне полезные вещи для ускорения. Учите горячие клавиши, в т.ч. и стандартные студийные. Расположите окна оптимально.
Ну а чтобы советовать что то более конкретное - нужно знать что конкретно у вас медленно происходит.
Региональные настройки компа какие? Вообще в собранном приложении эксепшны будут на языке локальных настроек (по крайней мере должны быть), но:
1) Не факт что поддерживается русский
2) Зачем оно надо - на английском самые информативные сообщения.
У вас немного некорректно поставлен вопрос. VisaulStudio - это просто меганавороченный блокнот. Ей все равно, пишете вы игру, сервер, веб-приложение или еще что то, лишь бы на знакомом ей языке. По сути ваш вопрос должен был звучать как "можно ли создать игру только средствами c#". Ответ - можно, но долго и непроизводительно. Если жесткое ограничение по языку - используйте Unity. Если жесткое ограничение по "не устанавливать ничего кроме IDE (VisualStudio)", то смотрите в сторону c++ оберток над openGL.
Вы можете взять velocity только у конкретно экземпляра класса Rigidbidy2D.
Пример. Есть тип мебели - шкаф. Шкафов - много. Но вам надо взять высоту не всех шкафов в мире, а одного конкретного шкафа. Так и тут. Rigidbody2D может быть много. Но вам нужен конкретный. Поэтому velocity не статический, и есть только у конкретного экземпляра.
Т.е. вам надо у вашего монобехейвиора найти Rigidbody2d, и у него брать велосити.
Например, так:
Rigidbody2D rigidbody = this.gameobject.GetComponent();
Vector2 velocity = rigidbody.velocity;
Это просто пример. Надо не забыть проверить на null, не делать GetComponent в апдейте. Можно вообще в инспекторе в объект положить его же Rigidbody...
На любом языке это называется keyboard hook. WinAPI вам тут тоже не нужно - тот же .NET замечательно в трей прячет форму и вполне себе поддерживает keyboard hook. Гугл в помощь )
Вот пример, крайне похожий на ваш: stackoverflow.com/questions/13469666/how-to-parse-...
Используется LitJson. Суть: заводите классы для сериализации, в них делаете get-еры на поля, названные так же как поля json. Все. В примере по ссылке даже массив есть.
Чуть сложнее - JBoy. Можете и его использовать, пример тоже легко гуглится.
Установть .net - обязательно. Студию ставить не надо.
Учтите, что начиная с win7 .net вроде бы встроен какой то.
И не забудьте приложение собрать в Release-конфигурации.
Если ваш Grid был инстанцирован как FileMember - то простое приведение типа и используйте (хоть это и скорее всего свидетельствует об ошибке проектирования). Если же Grid был инстанцирован как Grid - то ничего не сделаете.