December 26, 2018

Заметки по Годо в C#

ПРИМЕЧАНИЕ: Обновляется в реальном времени, как только "найду неизведанное".

Явный или неявный тип

Из-за привычки после недолгого использования GDScript начал постоянно использовать var вместо явного типа. По идее это быстрее, но из-за этого могут появится некоторые ошибки, так что лучше явно обозначайте тип переменной.

Как создавать экземпляр узла

Для того, чтобы объявить новый экземпляр узла (Node) перед самим классом надо указать тип узла в скобках. Сам экземпляр будет иметь тип Node, но нам еще надо знать какой узел у нас, так что пишем в такой манере (это называется апкаст):

Node someNode = (*тип узла, например Sprite*) GetNode(*путь к узлу, например "../../SomeNode");

Пример:

Node playerCam = (Sprite) GetNode("../Player/Camera1");

А так бы тот же самый код выглядел бы на GDScript:

var playerCam = GetNode("../Player/Camera1")

File

Для работы с файлами в Godot есть свои методы, ведь классический System.IO тут не подходит. В документации есть всё про версию из GDScript, но ничего нет про C#. Ну, в GDScript всё выглядит так:

var f = File.new()
f.Open(GameData, File.WRITE) //где GameData - string переменная с расположением файла

А C# выглядит так:

File f = new File();
f.Open(GameData, File.ModeFlags.Write.GetHashCode()); //где GameData - string переменная с расположением файла

Где Write вписываем нужный режим для работы с файлом - Write, Read, WriteRead, ReadWrite. Кстати, VSCode сильно тут помогает.

Еще не забудьте (!) после работы с фалом закрыть его, а не то другой скрипт не сможет его открыть. Это делается методом close() класса File:

f.Close() //"f" потому что в прошлом примере мы создали экземпляр