Я работаю над плагином в Unity3D для iOS. По какой-то причине мне нужно указать какой-то код в собственном коде (.mm в Xcode), который должен быть скомпилирован до Unity3D 4.1, а другой код должен быть скомпилирован после Unity3D 4.1 (включая). Может быть, примерно так:

#if UNITY_VERSION < UNITY_4_1
    //Some code be compiled before Unity4.1
#else
    //Some code for new version
#endif

Я знаю, что в редакторе Unity3D есть зависимая от платформы компиляция, но как я могу получить версию движка в Xcode и выполнить «компиляцию условий на основе версии Unity Engine»? Любое предложение будет оценено по достоинству!

Изменить: возможно, я могу написать два файла .mm для другой версии и удалить один из них в [PostProcessAttribute ]. Но я не думаю, что это хорошая идея ...

1
onevcat 21 Мар 2013 в 05:34

1 ответ

Лучший ответ

Не совсем понятно, что вы пытаетесь сделать. Вы создаете собственный код, внедряя его в проект XCode, созданный Unity? Или вы собираете собственный код в библиотеку, которая включается Unity во время сборки?

Насколько я знаю, XCode не может заранее узнать, какую версию Unity вы используете, не проверив установку Unity и не выяснив способ ее определения.

Если вы делаете последнее, то есть создаете библиотеку собственного кода, которая включена в сборку Unity. В этом случае вам понадобятся две отдельные библиотеки и попросите пользователя включить ту, которая уместна.

Если вы делаете первое, то есть внедряете новый собственный код в проект XCode, созданный Unity, тогда Unity экспортирует #defines, чтобы вы могли затем определить, с какой версией Unity ваш собственный код должен компилироваться.

0
Justin 3 Май 2013 в 23:33
Спасибо за Ваш ответ. Коды, генерируемые разными версиями Unity3D, не совпадают. Мне нужно писать разные коды для моего плагина в зависимости от версии Unity. Итак, я полагаю, что это последний случай в вашем ответе. Теперь я использую разницу в сгенерированных кодах между двумя версиями Unity, чтобы определить ее. Еще раз спасибо.
 – 
onevcat
4 Май 2013 в 19:11