Если не отключал функцию, то Word должен был делать резервные копии каждые несколько минут, читай как восстановить https://support.microsoft.com/en-us/kb/316951. Всегда делай резервные копии важных файлов.
Сообщение отредактировал Lertmind - Пятница, 01 Июля 2016, 17:31
Это вопрос к математикам. Точную формулу не получить, из похожих с логарифмом или степенной функцией. Вот пример:
Код
public static float Circle(int x, int y, int size) { float d = Vector2.Distance(new Vector2(size / 2, size / 2), new Vector2(x, y)); float radius = size / 2f; d = radius * 0.8f - d; d = Mathf.Clamp(d, 0f, radius * 0.7f); d = Mathf.Pow(d * 6, 0.6f); return d; }
В Unity лучше использовать AnimationCurve, если объявить поле в скрипте этого типа, то через Инспектор можно будет задать кривую, а в коде использовать метод Evaluate, чтобы определять любое сечение купола.
Добавлено (01 июля 2016, 13:42) --------------------------------------------- Если интересно, вот так использовал AnimationCurve:
Код
using UnityEngine;
public class Deformation : MonoBehaviour { public AnimationCurve Curve;
void Start() { Mesh mesh = GetComponent<MeshFilter>().mesh; Vector3[] vertices = mesh.vertices; for (int i = 0; i < vertices.Length; i++) { var v = vertices[i]; float z = Circle((int)v.x, (int)v.y, 100);
Я не это спросил, по второму предложению можно было понять, что говорится про то, каким образом ты хочешь задавать другой объект.
Судя по всему, ты хочешь сделать майнкрафт, тогда таким образом будет глупо делать. В майнкрафте ресурсы "выпадают", а не "превращаются", соответственно внешне должно выглядеть по-другому, и там не проверяется столкновение, а скорее всего просто рассчитывается воображаемое расстояние инструмента в руке и на основе этого определяется подвергается ли предмет действию, при этом анимация инструмента для красоты и нет на нём коллайдеров, если только для особых случаев или в реалистичных играх.
Добавлено (30 июня 2016, 23:54) --------------------------------------------- В общем, вот скрипт с тегом:
Код
using UnityEngine;
public class Transformation : MonoBehaviour { public GameObject SwapObject; public string CollisionTag;
Предполагается, что у объекта, который врезается есть Rigidbody (с отключенным isTrigger и отключенным isKinematic), а у объекта который превращается есть как минимум Collider с отключенным isTrigger. Хотя сам решишь как они врезаются, главное знай когда происходит OnCollisionEnter().
Сообщение отредактировал Lertmind - Четверг, 30 Июня 2016, 21:23
Создаёшь в иерархии кнопку (UI -> Button), удаляешь дочерний объект Text, у объекта Button в компоненте Image ставишь Source Image спрайт с включённым звуком, Image Type меняешь на Simple, добавляешь этот скрипт на объект Button:
Код
using UnityEngine; using UnityEngine.UI;
public class AudioButton : MonoBehaviour { public Sprite enableSprite; public Sprite disableSprite;
bool audioEnabled = true; public bool AudioEnabled { get { return audioEnabled; } set { SetAudio(value); } }
public void SwitchAudio() { AudioEnabled = !AudioEnabled; } }
В этом скрипте ставишь в Enable Sprite спрайт включённого звука, в Disable Sprite - выключенного. В компоненте Button нажимаешь внизу плюсик, перетаскиваешь объект Button где кружок с точкой и выбираешь функцию AudioButton.SwitchAudio.
Скрипт простой и только отключает звук у слушателя (AudioListener), по-хорошему нужно использовать аудио менеджер, также он предполагает, что звук вначале всегда включен, чтобы сохранять состояние звука необходимо использовать систему сохранений.
Сообщение отредактировал Lertmind - Четверг, 30 Июня 2016, 20:42
andarky, это называется Texture splatting или просто Texture blending. В террейне Unity реализовано примерно так: есть текстура для смешивания, в ней каждая компонента R, G, B, A хранит коэффициенты для текстур, которые будут смешиваться, то есть за один проход шейдера смешиваются 4 текстуры, дополнительные текстуры требуют больших проходов и соответственно уменьшают производительность. В книге "Unity 5.x Shaders and Effects Cookbook - Alan Zucconi, Kenneth Lammers - 2016" есть пример в разделе "Packing and blending textures". Вот простой шейдер (две текстуры, последняя маска) https://gist.github.com/Opotable/ade3a97fb9112c87da6c.
Сообщение отредактировал Lertmind - Четверг, 30 Июня 2016, 15:59
а через двоеточие числовые параметры этих объектов?
Никакого смысла там не кроется, может быть объект любого типа.
ЦитатаИльяНедогонов ()
Попытался во вторую строку «пристроить» objList таким образом:
Я писал, что этот код подходит, если объект точно существует, иначе можно так написать:
Код
names = ["Mishen", "Snarjad", "Vspyshka"] # Имена объектов for name in names: if name in objList: # Среди активных print("{} is active".format(name)) elif name in objList2: # Среди неактивных print("{} is inactive".format(name)) else: # Не существует print("{} don't exist".format(name))
ЦитатаИльяНедогонов ()
В предложенных вами ссылках подходящего ничего не нашёл
Я давал только одну ссылку https://www.blender.org/api/blender_python_api_current/ - документация по Blender API, там указаны все классы, методы и тому подобное, которые есть в Blender, очевидно там нет ответа на ваш вопрос, потому что это вопрос алгоритма.
ЦитатаИльяНедогонов ()
Что такое ".format(name)" в операторе print?
"{} is active" - строка, значит format() - метод строки. Строка - встроенный тип языка Python, следовательно читать про него надо в официальной документации https://docs.python.org/3/library/stdtypes.html#str.format. Если коротко, то это метод для форматирования строки, например число можно вывести в шестнадцатеричной системе счисления или указать количество знаков после точки в вещественном числе. Кстати, print в Python 3 - функция, а в Python 2 - инструкция (тоже что оператор).
Добавлено (29 июня 2016, 14:00) --------------------------------------------- ИльяНедогонов, как я уже говорил, тебе необходимо изучить основы Python, чтобы не застревать в простых местах.
Бозингар, вариант с условиями подходит в простых ситуациях. В "UI" такой проблемы нет, там можно просто включать/отключать объекты, что похоже на то, что ты делал, то есть изобретал велосипед, вместо того чтобы пользоваться современных "UI". Мог бы пойти дальше: сделать универсальные скрипты для каждого элемента интерфейса и объединять их с помощью GameObject.
Valik_Fenko, Transform.root - самый верхний в иерархии transform. Если нет родителей, то вернёт себя.
Добавлено (27 июня 2016, 22:22) --------------------------------------------- Кстати, твой код работает и на Transform pParent = transform; никто не ругается, но такой костыль лучше было так написать:
Код
using UnityEngine; public class RootTransform : MonoBehaviour { void Start() { Transform parent = transform; while (parent.transform.parent != null) parent = parent.transform.parent; print(parent.name); } }
Сообщение отредактировал Lertmind - Понедельник, 27 Июня 2016, 21:05
если мне необходимо несколько объектов проверять, например десяток, то как мне лучше эту проверку оформить?
Зависит от того, что ты хочешь на выходе получить и для какой цели. В любом случае, будет использоваться итерация по нужным именам объектов, простой пример:
Код
names = ["1", "2", "3"] # Имена объектов objects = { "1" : 10, "3": 30, "4" : 40 } # Активные объекты for name in names: if name in objects: print("{} is active".format(name)) else: print("{} is inactive".format(name))
Выведет:
Код
1 is active 2 is inactive 3 is active
Если ты знаешь, что объект точно есть, то нет смысла проверять в неактивных, иначе делаешь проверку и среди активных.
ЦитатаИльяНедогонов ()
И ещё, может, посоветуете источники информации для совсем-совсем начинающих о написании скриптов на Python для BGE.
Сначала подучи Python, почитай книгу или статьи в интернете. Твоя ошибка была элементарно в незнании языка, а не BGE. Я BGE не знаю и какого-то хорошего источника не знаю. Что вообще есть в API, очевидно надо смотреть в документации https://www.blender.org/api/blender_python_api_current/, материалов по BGE на английском ищется порядочно, про русский не знаю.
Сообщение отредактировал Lertmind - Понедельник, 27 Июня 2016, 18:15
name = "Snarjad" if name in scene.objects: objSnarjad = objList[name] print("objList Snarjad = true") elif name in scene.objectsInactive: objSnarjad = objList2[name] print("objList2 Snarjad = true")
OpenIAB.queryInventory() можно вызывать в любом месте кода, после чего получать список через обработчик, а OnBillingSupported() вызывается в OpenIAB.init(options);, то есть в данном примере при инициализации сразу получаем список продуктов. Разбирался только с помощью поиска и исходников, не проверял в проекте, но работать должно.
TLT, вот это прикол, заходим в стим: Warhammer 40000: Dawn of War II: Retribution -75% 257 руб Alien: Isolation Collection -75% 499 руб Total War Grand Master Collection -75% 1584 руб