falcoware, falcoware, Invention почти съела успех в Greenlight. Пора делать убийцу ААА игр, инвестировать в хорошие проекты. Ну, конечно, не деньгами, а то...
Цитатаfalcoware ()
то ты не устоишь и все спустишь на баб и выпивку
Сообщение отредактировал ShortKedr - Вторник, 28 Июня 2016, 23:13
В blender есть возможность рисовать текстурами по модели/uv развёртке, а затем сохранять в текстуру готовую. Можете корректировать места со швами уже готовых текстур, что бы этого эффекта не было видно)
Бозингар, if срабатывает на true только при нажатии твоей кнопки, а это длится долю секунды,то есть ты ничего не увидишь. Вещай какой нибудь check на это всё, переменную bool, например public bool drawTexturePanel.
ЦитатаБозингар ()
Но метод выглядит малость костыльным
Что значит костыльный, это то, как и должно быть, не хотите кучу bool - делайте Hashtable своих или ещё каких псевдо bool классов и храните всё в одной хеш таблице. В общем то GUI обычно, в серьёзных проектах не используется кучей кода в одном скрипте, а подразделяется на классы и функции(когда значимость элемента не столь велика), обычно классы:
Простой, не самый лучший пример, но тем не менее: Простая, кастомная кнопка
Код
[Serializable] public class RButton{
public Texture normal; public Texture hover; public Texture down;
public Rect position; public PositionAnchor xAnchor = PositionAnchor.Middle; public PositionAnchor yAnchor = PositionAnchor.Middle;
public event Action OnDown; public event Action OnUp; public event Action OnHover; public event Action OnLeave; public event Action OnStartDraw; public event Action OnEndDraw; public event Action OnUpdate;
[HideInInspector] public bool isHover = false; [HideInInspector] public bool isDown = false;
public virtual void Update(){
if (isHover){ if (Input.GetMouseButtonDown(0)){ if (OnDown != null) OnDown(); isDown = true; } if (Input.GetMouseButtonUp(0)){ if (OnUp != null) OnUp(); isDown = false; } }
if (OnUpdate != null) OnUpdate(); }
public virtual void Draw(float ratio, Vector2 offset){
if (OnStartDraw != null) OnStartDraw();
float x = 0f; if (xAnchor == PositionAnchor.Left) x = position.x * ratio; if (xAnchor == PositionAnchor.Middle) x = position.x * ratio +offset.x; if (xAnchor == PositionAnchor.Right) x = Screen.width - (position.x + position.width) * ratio;
float y = 0f; if (yAnchor == PositionAnchor.Left) y = position.y * ratio; if (yAnchor == PositionAnchor.Middle) y = position.y * ratio +offset.y; if (yAnchor == PositionAnchor.Right) y = Screen.height - (position.y + position.height) * ratio;
GUI.DrawTextureWithTexCoords(new Rect(x, y, width, height), texture, new Rect(0, 0, 1, 1));
if (OnEndDraw != null) OnEndDraw();
}
}
P.S. Вообще, если вы не программист и не хотите в этом разбираться, то используйте UI
Добавлено (28 июня 2016, 11:47) --------------------------------------------- Lertmind, кто нибудь догадался пропатчить стандартный CanvasScaler парой строчек кода?) Мягко сказать, его растяжение не везде ахти, к примеру на 16:9 всё норм, но вот при обратной 9:16 всё разлезется(или взять те же квадратные мониторы)
Вот небольшой патч, который появился у RW при переходе на UI:
... Для большинства конечно)
Код
using UnityEngine; using System.Collections; using UnityEngine.UI;
public class AutoMatch : MonoBehaviour {
public CanvasScaler scaler; private Vector2 lastScreenSize = Vector2.zero;
void Update(){ UpdateMatchRatio(); }
private void UpdateMatchRatio(){
if (lastScreenSize.x != (float)Screen.width || lastScreenSize.y != (float)Screen.height){ lastScreenSize = new Vector2((float)Screen.width, (float)Screen.height);
Не, конструктор на конструкторе - это усложнение жизни для "еговошнего" разработчика. А также упрощение и без того несложной системы Construct. Всё равно что писать движок без ООП на чистых функциях и в одном файле, я считаю) Самый главный минус - всё сводится к шаблонности и большому кол-ву ненужных вещей, что не очень хорошо. Знаете почему ОС лучше писать ЯП низкого уровня? - Потому что они быстрее работают и меньше потребляют :)
Расскажите лучше что вы успели сделать за 3 года и что сейчас имеется в вашем конструкторе. ИМХО конечно, хотя и не совсем - но за 3 года можно не плохой 3D движок написать) Поэтому, думаю - народ будет требовать много вкусняшек)
Сообщение отредактировал ShortKedr - Понедельник, 27 Июня 2016, 19:17
Например, на разных уровнях у пользователя будет один и тот же скрип. Что приведет к тому, что код не сможет определить, какой терм к чему относится.
До сих пор не могу понять почему он не сможет этого сделать :D Теперь я понимаю, что речь идёт про все объекты на сцене, но тут у меня ещё больше недоумения) Может вы не правильно что-то поняли. Какой терм и к чему он относится у вас определяется аттрибутом - что и чем заполнить) Небольшая вырезка кода:
Код
FieldInfo[] fi = obj.GetType().GetFields();
foreach (FieldInfo fieldInfo in fi) { object[] attributes = fieldInfo.GetCustomAttributes(typeof(LocalizationRequired), false); if (attributes.Length > 0){ LocalizationRequired lr = (LocalizationRequired) attributes[0]; Debug.Log(lr.localizationName); // Или как она у вас там зовётся) } }
attributes - это все аттрибуты типа LocalizationRequired у текущего поля. Для удобства можно использовать рекурсивную функцию с указанием объекта обхода, его типа и ссылкой на LocalizationComponent, что бы для вложенных объектов тоже её сразу вызывать.
Если речь идёт о другом, то просто обрабатываете все MonoBehaviour по цепочке:
Добавлено (26 июня 2016, 11:16) ---------------------------------------------
ЦитатаxMoonGuarDx ()
Говорят, что юнька в скором времени перейдет на .net 4.6 и c# 6
Это отличная новость :D
Добавлено (26 июня 2016, 11:29) --------------------------------------------- Я понял, что вы имели ввиду, так вот. Сделайте второй конструктор для LocalizationRequired, без параметров, добавьте какой нибудь bool флаг, который будет ставится на true только с первым конструктором. У полей классов с LocalizationRequired без параметров вызывайте FillTerms, но указывая уже этот класс. fieldInfo.GetValue знаете как пользоваться) Вот и решение проблеммы, нужно только сделать проверку, чем является поле
Код
if (fieldInfo.FieldType == typeof(string)) { //если string } else if (fieldInfo.FieldType.IsClass) { //если класс }
Сообщение отредактировал ShortKedr - Воскресенье, 26 Июня 2016, 11:39
xMoonGuarDx, здорово, я атрибуты тоже активно юзаю.
ЦитатаxMoonGuarDx ()
не знаю, что-то вставило меня это действо
У самого также
ЦитатаxMoonGuarDx ()
п.с. просматривает только самый верхний уровень объекта. Пока думаю над тем, делать ли вложенные. Но склоняюсь к тому, что нафиг надо. Что бы не получались перекрещивающиеся элементы.
Вложенные, это в смысле обработка внутренних объектных вложений? По идее её тоже нужно сделать. Сделай рекурсию, одной функцией сразу все вложение заполнишь.
Я тут странный парадокс заметил. Система почтовых извещений не реагирует на разных пользователей, хотя возможно, что это как-то с разделами сайта связано. С разных тем по разному, то приходят уведомления, то нет :o
Раздел: Идеи для реализации. С большинства тем приходят уведомления, с некоторых почему-то нет)
Сообщение отредактировал ShortKedr - Суббота, 25 Июня 2016, 10:55
Не понимаю, какой смысл просчитывать коллизии и передавать прохождение пули, которая ведёт себя прогнозируемо (летит от точки A к точке B). Оптимизация по логике.
Согласен! Когда речь не идёт про реальную и сложную физику полёта пули, как при выстреле из огнестрела например, можно обойтись точками A,B и псевдо эффектом пролёта пули
Huricane, в этот раз попытаюсь быть более серьёзным)
ЦитатаHuricane ()
На рисунке действительно! девушка, она лежит в постели. Хотелось бы больше подробностей о возможной предыстории.
Возможно она ещё совсем юная. У неё депрессия, она разочаровалась в жизни, начинает делать поспешные выводы обо всём, в первую очередь о надобности своей жизни
Нет, ну серьёзно, с нормальными девушками в юном возрасте такое не раз случается. Зачастую, даже, наверно виновата неправильная компания, неправильное понимание сущности человека и, возможно, даже, непонимание бытия
Сообщение отредактировал ShortKedr - Суббота, 25 Июня 2016, 10:05
Vicka, на самом деле арт и балансировка тут больше всего времени отнимут. Кода не столь много будет, я думаю) Если конечно не планируется что-то вкусненькое, вроде инвентарей прокачаных или систем квестов, диалогов сложненьких
Как говорил мой знакомый программист: "Я что-то разучился любить продумывать всё наперёд - теперь у меня тонны ненужного кода" Вскоре он решил отказаться от этой дурной привычки. О чём это я. Открываешь VS. смотришь на пустой код, 10 минут думаешь как лучше сделать задуманное - получаешь профит по времени, моделишь нам няшную графику, мы восхваляем разработчика
Удачи в конкурсе!)))
Сообщение отредактировал ShortKedr - Пятница, 24 Июня 2016, 20:54
Я вижу начинание бреда, танки, нло, даэдра с ливитирующим около носа камнем бесконечности, дьявола, смерть, рыбу, комара, скалу, сексуальные извращения на втором плане, ладонь и циклопа. Ах да, ещё странного человека в неведении своей судьбы на переднем плане)
А вообще можно поинтересоваться, это тест такой?
Добавлено (24 июня 2016, 20:24) ---------------------------------------------
ЦитатаBarbatos ()
Сигаретку я пририсовал что бы пропагандировать курение.
А это законно?
Сообщение отредактировал ShortKedr - Пятница, 24 Июня 2016, 20:26