Вот хорошая статья по расширению меню, можно добавлять через него Unity Editor Extensions – Menu Items. Например, этот код после нажатия Tools/New GameObject добавит новый GO (скрипт надо класть в папку Editor):
Код
using UnityEngine; using UnityEditor;
public class NewBehaviourScript : MonoBehaviour {
[MenuItem("Tools/New GameObject")] private static void NewGameObject() { var go = new GameObject("New GameObject"); go.transform.position = new Vector3(1, 1, 1); } }
Добавлено (25 сентября 2016, 17:46) --------------------------------------------- Там же (в меню справа) есть про расширение Инспектора, если хочешь видеть кнопки там.
Сообщение отредактировал Lertmind - Воскресенье, 25 Сентября 2016, 17:46
Ох, я думал ты поймёшь по примеру, что использовать сеть через эту DLL не обязательно, чтобы использовать буферы. Ещё раз внимательно посмотри примеры.
Что значит "отправлять данные в GMS"? Если ты о сети - нашёл такую библиотеку Http Dll 2, там есть буферы, которые можно сжимать Buffers. По ссылке примеры, можно открывать файлы и сжимать через buffer_zlib_compress.
Во-первых, в JSON переменные в кавычках. Класс надо помечать атрибутом [System.Serializable]. Писать new GGData(); необязательно, если только делать JsonUtility.FromJson. Только что проверил: // datafile.json
[System.Serializable] public class GGMessage { public string type; public GGData data = new GGData(); }
[System.Serializable] public class GGData { public string token; public string user_id; public string channel_id; public string errorMsg; public int error_num; public string channel_name; public string user_name; }
public class SerializationControl1 : MonoBehaviour { string filePath;
uslucifer, ещё у меня код не оптимальный: добавляются элементы следующего уровня вложенности до проверки текущего. Не буду переписывать, выложил для примера, так как лучше адаптировать код для конкретных случаев, например поиска только на одном уровне вложенности или на одном объекте.
uslucifer, есть другой способ, не знаю единственный ли. С помощью SceneManager.GetActiveScene().GetRootGameObjects() получаем все GameObject в корне, включая неактивные, а потом проходим по всем потомкам. Этот код находит любой GameObject на сцене:
Код
using UnityEngine; using UnityEngine.SceneManagement;
using System.Collections; using System.Collections.Generic; using System.Linq;
public class SceneHelper : MonoBehaviour { void Start() { var go = SceneHelper.FindAny("Sphere"); print(go); }
public static GameObject FindAny(string name) { GameObject[] rootGO = SceneManager.GetActiveScene().GetRootGameObjects(); Queue<Transform> queue = new Queue<Transform>(rootGO.Select(x => x.transform));
while (queue.Count > 0) { Transform current = queue.Dequeue(); if (current.name == name) { return current.gameObject; }
for (int i = 0; i < current.childCount; i++) { queue.Enqueue(current.GetChild(i)); } } return null; } }
Насколько это медленно, надеюсь не стоит говорить.
Сообщение отредактировал Lertmind - Вторник, 20 Сентября 2016, 22:33
Saitei, я этого не отрицал, но перейти всё равно советую. Gudleifr, про умные указатели и избавления от new и delete. nullptr - тоже важен. Там ещё были всякие удобства типа списка инициализации и enum class. Я знаю C++ плохо, так что не стоит воспринимать серьёзно
Мог бы просто открыть интернет и найти код. Ты обращался к нулевому указателю first; не обнулял newtask->nextTask (как упомянуто выше); логика вывода неверная. Исправленный класс taskList:
if (last) last->nextTask = newtask; last = newtask;
if (!first) first = newtask; } void dispTask() { task* current = first; while(current) { cout << current->header << ":\n" << current->description << "\n" << "Task id: " << current->id << "\n"; current = current->nextTask; } } };
Способ добавления элементов неверный, у тебя будут указатели header и description у всех элементов указывать на одни и те же массивы, например такой код:
И ты наверно заметил, что Task id одинаковые, это потому что статические переменные общие для всех экземпляров класса. Ещё на каждый new должен быть delete. Советую перейти на современный С++.
Сообщение отредактировал Lertmind - Вторник, 20 Сентября 2016, 05:41
dreenline, Исуси. Сколько раз уже спрашивали про Android. Попробуй понизить настройки качества. Возможно памяти не хватает. Поковыряй другие настройки. В конце, когда ничего не получится читай логи и дебаж, как написано в официальном руководстве.
Сообщение отредактировал Lertmind - Понедельник, 19 Сентября 2016, 22:31
URGINSAN, ты пробовал? Я сейчас пытался: если камера с одним объектом имеет Depth выше (т. е. рисуется позже) и на ней Bloom, то применяется ко всей сцене, а если наоборот, то любой объект на фоне, который не на слое для блум-камеры, убирает эффект у этого объекта. Пробовал стандартные Bloom и отсюда https://bitbucket.org/Unity-Technologies/cinematic-image-effects/.
Maxplant, ты понимаешь, что если объект будет тёмный - он не будет светиться? Если тебе нужно свечение (glow) не как bloom, то попробуй MK Glow https://www.assetstore.unity3d.com/en/#!/content/28044, там можно применять к отдельным объектам.
Сообщение отредактировал Lertmind - Понедельник, 19 Сентября 2016, 15:52
В гугле полно статей. Недавно отвечал http://gcup.ru/forum/59-8269-720732-16-1473969277. Твоя идея не самая лучшая и медленная, но реализуемая. До того, как в бесплатной версии Unity стало доступно Render To Texture, я писал простой код для тумана войны, который рисует попиксельно круг на текстуру лежащую сверху. Чтобы можно было считать текстуру, в настройках импорта ставишь Read/Write Enabled. Если я правильно понял, ты хочешь наложить на один спрайт на другой. Для этого надо провести элементарные действия: * Узнать координаты углов у спрайтов * Рассчитать позиции углов накладываемого спрайта относительно тёмного спрайта (x и y от 0 до 1) * Ну а чтобы получить координаты в текстуре тёмного спрайта - умножаешь эти координаты на размеры текстуры ((int)(localPos.x*texture.width), (int)(localPos.y*texture.height)) * И рисуешь с помощью SetPixel или другого способа.
Добавлено (19 сентября 2016, 00:24) --------------------------------------------- P.S. Хотя будут проблемы, если размеры текстур разные.
White Ash Studio - женское бельё Cryostasis - есть такая игра Forbidden Games - женские духи Octobyte Games - уже есть, а от слова Studio ничего не изменится Byteplay - есть такой Python-модуль и компания BYTEPLAY LIMITED Bunch Studio - цветочный магазин
Так что, Byteplay сойдёт.
Добавлено (18 сентября 2016, 17:17) --------------------------------------------- Хотел пошутить про "Кирпич" со слоганом "Вы отложите парочку", но такое упоминание уже есть.
Я понял почему не видел экрана победы, из-за захвата клеток через ману. Думал, что выигрыша просто не предусмотрено. Для записи лучше использовать что-то получше, ShareX - хорошая программа, правда для записи с экрана она использует ffmpeg, путь до которого надо указать в настройках. Вот пример записи: https://youtu.be/UwSRSqJLSxA, я ещё увеличил размер экрана, чтобы в FullHD можно было видеть чёткие пиксели.
alexeishaiduk, я привёл исправленный код... Зачем ты говоришь о GetInt и SetInt? Можно конечно истину и ложь хранить как 1 и 0, но это ничего не меняет.
Да и что плохого если я попробую чтонть выучить на четвёрке?
Твоё дело, только никто не использует устаревшие технологии в новых проектах и когда разберёшься и обновишь компьютер в новых версия Unity выпилят поддержку.