Функции Unity Internal_xxx

#c# #unity3d

#c# #unity3d

Вопрос:

Я разработчик C и никогда раньше не занимался C #. Из любопытства я просматривал код Unity и не уверен, что понимаю следующий код:

 [FreeFunction(Name = "GameObjectBindings::Internal_CreateGameObject")]
static extern void Internal_CreateGameObject([Writable] GameObject self, string name);
 

https://github.com/Unity-Technologies/UnityCsReference/blob/master/Runtime/Export/Scripting/GameObject.bindings.cs#L376

Мне кажется, что конкретный код реализован во внешнем файле (extern), внутри другого класса с именем GameObjectBindings , но который, похоже, не указан внутри источника Unity, поскольку я не смог выполнить grepping Internal_CreateGameObject и GameObjectBindings . Что FreeFunction на самом деле означает и почему я не смог найти функции Internal_xxx? Похожая ссылка https://forum.unity.com/threads/how-does-the-freefunction-attribute-work.857653 /

Заранее спасибо!

Ответ №1:

Это не полный исходный код Unity, это просто репозиторий со ссылками на C #. Все исходные тексты c по-прежнему недоступны.

Комментарии:

1. А, хорошо, спасибо, я понял! Я знал этот документ, но я не был уверен в значении «ссылки на C #». Прав ли я, если могу сказать, что C # является слоем-оболочкой в коде C и, следовательно, FreeFunction(Name = «GameObjectBindings::Internal_CreateGameObject») относится к классу C ?

2. @Lecrapouille Да, это так.