Comments 34
Неплохая выборка для тех кто не стал читать документацию. В основном новичкам будет полезно.
Отдельное спасибо за объяснение про лучи, как раз думал, как определить, на какой объект пользователь клацнул мышью.
UFO landed and left these words here
ИМХО — от статьи больше вреда чем пользы. Например, за Find(name) можно увольнять, если оно больше чем раз.
Спасибо. Статья в первую очередь позиционируется как справочник, а не самоучитель. Просто хотел, чтобы человек, впервые взявшийся за данный движок, знал о подобных возможностях. Если у Вас есть предложения, то я всегда готов к конструктивной критике.
объясните, пожалуйста, подробнее. Я, к примеру, реализовываю синглтон вот так:
public class FileDownloader : MonoBehaviour
{
private static FileDownloader instance = null;

public static FileDownloader current {
get { return instance; }
}

// Use this for initialization
void Awake ()
{
if (FileDownloader.instance == null) {
FileDownloader.instance = FindObjectOfType (typeof(FileDownloader)) as FileDownloader;
}
queue = new Queue ();
isReady = false;
}


Это плохо? Чем?
ну, последнюю неделю, я провел работая над тем что бы игра закажчика на айфоне 3гс выдавала больше 20 фпс. Чесно признаться — лучше вообще ничего не искать. Совсем. Сделайте себе референс, перетащите в редакторе. Тем более я сказал, «больше чем раз». У вас оно раз, не каждый кадр, а при старте/возвращении. Но я все еще не понял зачем. У вас же и так статический FileDownloader, зачем его еще искать?
в смысле куда логичнее было бы сделать инициализацию лениво в самом файл даунлоадере, не?
public class FileDownloader
{
private static FileDownloader _instance = null;
public static FileDownloader instance
{get { return _instance??(_instance = new FileDownloader()); } }
}

Тема оптимизации вообще заслуживает отдельной статьи. В данной замечательной статье рассматриваются некоторые вопросы оптимизации, в одноименной главе. В частности, цитирую:
2. Без необходимости лучше не использовать Find\GetComponent и похожие методы — по мере возможности лучше сохранить ссылку на компонент один раз при запуске скрипта.
UFO landed and left these words here
Я руководствовался оффициальной документацией, в частности этим описанием. В принципе на практике я никогда не испытывал проблем с указанием больших значений, однако раз это указано в Script Reference, я решил упомянуть об этом и в статье.
возможно оффтопик, но хотел бы спросить.
можно ли модифицировать один обьект другим обьектом с использованием булевой опреации?

грубо говоря есть квадрат и окружность (пересекающаяся), надо получить обьект иллиюстрирующий булевую операцию «И»
тоесть оставить только ту область где два обьекта пересекаются?

Встроенной функции нет для этого, но можно напрямую редактировать вертексы мешей, то есть ничего не мешает написать собственную реалиазацию подобного.
Ничего нового для себя не нашёл, но новичкам правда может пригодится.

Автору всё равно спасибо
Ну вот, а я как раз подобную статью пишу в данный момент. Даже не знаю, стоит ли постить теперь…

По статье — сухо, ну какой мне толк от того, что я знаю, как получить кватернион объекта, если я не понимаю, что это такое и как они работают (статья на вики не одержит ответа на этот вопрос). В Scripting Refefence и то подробнее все расписано.
Лично мое мнение — полезной информации никогда не бывает много. Поэтому писать статью Вам определенно стоит.
Возможно описано сухо, но я постарался аггрегировать наиболее употребляемые мной лично методы в работе, надеюсь кому-то пригодится как справочник. Изначально была идея сделать «живые» примеры использования для большинства описанных методов, но статья выходила слишком объемный. Решил оставить в таком виде, как вводной экскурс. Если получится, то в ближайшее время планировал сделать более подробные статьи по каждому разделу с примерами и описанием.
Да просто обсасывать одну и ту же тему, ИМХО, моветон. Тем более, с отрывом в пару дней :)

Ну, если как справочник — тогда все окей, начинающим конечно пригодится, просто я больше именно туториалы и хау-ту читаю, поэтому первая реакция такая была.

Про объем можете и не говорить, я в январе этого года написал тут коротенький туториал для новичков, а когда второй стал делать быстро сдулся, потому что пытался объяснить в одном уроке от и до каждый аспект… А сейчас вот решил продолжить это дело, только уже постепенно матчасть объяснять, а не сразу практические задачи решать…
UFO landed and left these words here
Просто на JavaScript пишу несколько дольше, да и изначально писать под Unity3d начал на нем. Конечно переучиваться никогда не поздно, но на данный момент меня все устраивает.
Очень познавательно для новичков и для тех кто не читает документацию, но я бы на вашем месте раскрыл все таки нюансы производительности при использовании той или иной функции например Find(name) как писали выше, категорически нельзя пихать в Update(), или например:

Добавить объекту крутящий момент. Применение данного метода заставит объект вращаться вокруг своей оси в указанную сторону:

GameObject.rigidbody.AddTorque(0, 1, 0);


Маленькая поправка: он будет вращаться всетаки вокруг своего центра тяжести rigidbody.centerOfMass.
У меня была одна проблема, которую до сих пор не решил:
Есть объект не правильной формы, скажем в виде буквы «П», для инспектора в Юнити он представляется как правильный прямоугольный объект, как программно определить все его реальные стороны, то есть внутренние стороны «П», с внешними все понятно, это не сложно, а вот внутренние, или скажем изначально объект в Максе был повернут и сохранен, в Юнити его видно как прямоугольный, но у него уже есть угол наклона, тоже определить его реальные стороны так и не вышло.

Некто не сталкивался с такой проблемой и не знает как ее решить?
Я не совсем понял о чем речь (точнее совсем не понял),
скриншот помог бы!
Давайте перефразирую, есть фигура в виде ромба, для инспектора он прямоугольник, как реально найти стороны этой фигуры?
Это такой очень тонкий троллинг? )

1. Что значит фраза «для инспектора в юнити он представляется»?
2. Что значит фраза «как программно определить все его реальные сторон»/«как реально найти его стороны»?

Нужен скриншот, или лучше чуточку более внятное описание и можно простой проект-пример.

Спасибо!
Я конечно могу ошибаться, но мне кажется, что у Вас при импорте задействуется дефолтный боксовый коллайдер. То есть после импорта модели Вам следует повесить на нее коллайдер с той же геометрией, что и сама модель. То есть навесить в качестве коллайдера эту же модель. Немного субурно, конечно, но думаю смысл ясен :)
Неплохо было бы добавить, что обращение к rigidbody объекта требует, чтобы у этого объекта был компонент Rigidbody (добавить либо через редактор, либо через код), а то будет возникать NullReferenceException
Only those users with full accounts are able to leave comments. Log in, please.