Решение этой проблемы постоянно меняется с течением времени, когда Unity и Android SDK меняются.
Обратите внимание, что его проблема, по-видимому, исправлена в Unity 2017.1.
ПОСЛЕДНЕЕ РЕШЕНИЕ
1) Для Windows загрузите "tools_r25.2.3-windows.zip" и разархивируйте его.
2) Для MacOSX загрузите "tools_r25. 2.3-macosx.zip " и разархивируйте его.
3) Добавьте путь распакованного SDK к настройкам Edit -> ] ---> Внешние инструменты ---> SDK box.
STILL NOT WORKING?
Удалить SDK Tools 25 и Android SDK Tools 26. Удалить как SDK Platform-Tools, так и SDK Tools. Используйте номер версии ниже.
OLD SOLUTION:
Вы не правильно настроили SDK .
Для настройки Android SDK выполните следующие действия.
1. Убедитесь, что в SDKpath нет пробелов. Поэтому создайте папку с именем AndroidSDK
в каталоге C
.
2. Скопируйте папку Android-sdk
в каталог C:/AndroidSDK
.
Теперь ваш путь к SDK должен выглядеть так:
C:/AndroidSDK/Android-sdk
3. Обновите свой Android SDK-путь в редакторе Unity.
Теперь проверьте, работает ли это, пытаясь снова создать для Android.
Если это не удается, продолжайте снизу
4. Загрузите последнюю версию Unity.
5. Перезагрузите SDK , затем скопируйте файл в C:/AndroidSDK/Android-sdk
.
6. Вернитесь в Unity и обновите путь
7. Создайте проект для Android еще раз, он покажет ошибку и попросит вас обновить SDK.
Нажмите кнопку «Обновить Android SDK». Unity автоматически обновит ваш SDK. Затем ваш SDK должен выглядеть как-то внизу. Ваша проблема должна быть удалена.
Это - этот путь в SQL (как логический язык) потому что пустые неизвестные/неопределенные средства.
Однако на языках программирования (как говорят, C++ или C#), нулевой указатель / ссылка является определенным значением с определенным значением - ничто.
Два мелочей являются equivilent, но два неизвестных не. Беспорядок прибывает из того, что то же имя (пустой указатель) используется для обоих понятий.
В VB6 выражение Null = Null
произведет Null
вместо True
поскольку Вы ожидали бы. Это вызовет ошибку периода выполнения, при попытке присвоить ее булевской переменной, однако если Вы используете ее в качестве условия"If ... Then
"это будет действовать как False
. Кроме того, Null <> Null
также произведет Null
, так:
В VB6 Вы могли сказать это Null
ни один равно себе (или ничто больше), ни неравен!
Вы, как предполагается, тестируете на него с помощью IsNull()
функция.
VB6 также имеет другие специальные значения:
Nothing
для ссылок на объект. Nothing = Nothing
ошибка компиляции. (Вы, как предполагается, сравниваете его использование"is
")Missing
для дополнительных параметров, которые не были даны. Это не имеет никакого литерального представления, таким образом, Вы не можете даже записать Missing = Missing
. (тест IsMissing(foo)
)Empty
для неинициализированных переменных. Этот действительно тестирует равный себе, хотя существует также функция IsEmpty()
.Я не забываю немного чувствовать отвращение к VB.
Oracle является этим путем.
SELECT * FROM dual WHERE NULL=null; --no rows returned
MySQL имеет пустой безопасный оператор равенства, <=>, который возвращает true, если обе стороны равны, или обе стороны являются пустыми. Посмотрите MySQL Docs.
Можно заставить рубин проложить себе путь:
class Null
def self.==(other);false;end
end
n=Null
print "Null equals nothing" if n!=Null
В C# Nullable <bool> имеет интересные свойства относительно логических операторов, но оператор равенства совпадает с другими типами на том языке (т.е. ((bool?) пустой указатель == (bool?) пустой указатель) == верный).
Чтобы сохранить закороченное поведение закороченных логических операторов и сохранить непротиворечивость с незакороченными логическими операторами, nullable булевская переменная имеет некоторые интересные свойства. Например: верный || пустой указатель == верный. ложь && пустой указатель == ложь, и т.д. Это стоит в прямом противоречии с другими трехзначными логическими языками, такими как ANSI SQL.
В SQL вам нужно будет сделать что-то вроде:
WHERE column is NULL
, а не
WHERE column = NULL