cool20141 cool20141

<a href= http://mosros.flybb.ru/viewtopic.php?f=2&t=635>Процесс получения диплома стоматолога: реально ли это сделать быстро?</a>

danilaxxl danilaxxl

CollectableItemData.cs

[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]

GoloGames GoloGames

vadya_ivan, рад, что вам игра показалась интересной : )

P.S. Кстати уже доступна бесплатная демо-версия в Steam

vadya_ivan vadya_ivan

Визуал, задумка, музыка , механики, все в цель

GoloGames GoloGames

Ato_Ome, спасибо за позитивные эмоции, будем стараться : )

Ato_Ome Ato_Ome

Потрясающий результат, все так четенько, плавненько)
То ли саунд, то ли плавность напомнили мне игрушку World of Goo, удачи вам в разработке и сил побольше дойти до релиза!)

Cute Fox Cute Fox

Graphics are a little cool, good HD content. But this game doesn't cause nary interest me.
However the game is well done.

GMSD3D GMSD3D

Почему действие после всех условий выполняется?
[step another object]

Zemlaynin Zemlaynin

Jusper, Везде, но наугад строить смысла нет. Нужно разведать сперва территорию на наличие ресурсов.

Jusper Jusper

Zemlaynin, а карьеры можно будет везде запихать?
Или под них "особые" зоны будут?

Zemlaynin Zemlaynin

Это так скажем тестовое строительство, а так да у города будет зона влияния которую нужно будет расширять.

Jusper Jusper

А ссылка есть?

Jusper Jusper

Я не оч понял из скриншота, как вообще работает стройка. У игрока будет как бы поле строительства?

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

ViktorJaguar ViktorJaguar

Почему я нигде не могу найти нормальный туториал, где покажут как экипировать предмет (например, меч) в определенную (выделенную под оружие) ячейку???

Логотип проекта Unity

Как использовать иконки ассетов

Для создания редакторов порой приходится делать собственные браузеры, которые так или иначе используют нативные изображения.

Как использовать иконки ассетов — Unity — DevTribe: инди-игры, разработка, сообщество

Ниже я хотел бы рассказать немного о том, как этого добиться.

Достать иконку по умолчанию

Иконка по умолчанию - это то, что достается, если у изображения нет превью, либо оно еще не подгружено.
Сделать это можно по типу объекта с помощью функции AssetPreview.GetMiniTypeThumbnail. Например:

var defaultIcon = AssetPreview.GetMiniTypeThumbnail(typeof (GameObject));

Либо через функцию AssetPreview.GetMiniThumbnail, в которой можно указать экземпляр объекта. Однако, если экземпляр пуст, или тип не имеет иконки мы получим null, что не всегда хорошо. Чтобы этого избежать можно подгружать иконки по их названиям.

Я советую использовать для "неопределенного типа" иконку префаба, она визуально хорошо ассоциируется с любым ассетом, а для null экземпляра - иконку пустого префаба.
Чтобы достать определенную иконку, нужно воспользоваться командой EditorGUIUtility.LoadRequired() или EditorGUIUtility.Load. Различаются эти команды тем, что LoadRequired дополнительно пишет в логе ошибку, если текстура не найдена.

icons/generated/animation icon.asset
icons/generated/animationclip icon.asset
icons/generated/animator icon.asset
icons/generated/animatorcontroller icon.asset
icons/generated/animatoroverridecontroller icon.asset
icons/generated/animatorstate icon.asset
icons/generated/animatorstatemachine icon.asset
icons/generated/animatortransition icon.asset
icons/generated/anystatenode icon.asset
icons/generated/areaeffector2d icon.asset
icons/generated/arealight icon.asset
icons/generated/assetstore icon.asset
icons/generated/audiochorusfilter icon.asset
icons/generated/audioclip icon.asset
icons/generated/audiodistortionfilter icon.asset
icons/generated/audioechofilter icon.asset
icons/generated/audiohighpassfilter icon.asset
icons/generated/audiolistener icon.asset
icons/generated/audiolowpassfilter icon.asset
icons/generated/audiomixercontroller icon.asset
icons/generated/audiomixergroup icon.asset
icons/generated/audiomixersnapshot icon.asset
icons/generated/audiomixerview icon.asset
icons/generated/audioreverbfilter icon.asset
icons/generated/audioreverbzone icon.asset
icons/generated/audiosource icon.asset
icons/generated/avatar icon.asset
icons/generated/avatarmask icon.asset
icons/generated/billboardasset icon.asset
icons/generated/blendtree icon.asset
icons/generated/boo script icon.asset
icons/generated/boxcollider icon.asset
icons/generated/boxcollider2d icon.asset
icons/generated/camera icon.asset
icons/generated/canvas icon.asset
icons/generated/canvasgroup icon.asset
icons/generated/canvasrenderer icon.asset
icons/generated/capsulecollider icon.asset
icons/generated/cgprogram icon.asset
icons/generated/charactercontroller icon.asset
icons/generated/characterjoint icon.asset
icons/generated/chorusfilter icon.asset
icons/generated/circlecollider2d icon.asset
icons/generated/cloth icon.asset
icons/generated/computeshader icon.asset
icons/generated/configurablejoint icon.asset
icons/generated/constantforce icon.asset
icons/generated/constantforce2d icon.asset
icons/generated/cs script icon.asset
icons/generated/cubemap icon.asset
icons/generated/d_areaeffector2d icon.asset
icons/generated/d_audiomixerview icon.asset
icons/generated/d_canvas icon.asset
icons/generated/d_canvasgroup icon.asset
icons/generated/d_canvasrenderer icon.asset
icons/generated/d_gridlayoutgroup icon.asset
icons/generated/d_horizontallayoutgroup icon.asset
icons/generated/d_particlesystem icon.asset
icons/generated/d_platformeffector2d icon.asset
icons/generated/d_recttransform icon.asset
icons/generated/d_surfaceeffector2d icon.asset
icons/generated/d_verticallayoutgroup icon.asset
icons/generated/d_wheeljoint2d icon.asset
icons/generated/defaultasset icon.asset
icons/generated/defaultslate icon.asset
icons/generated/directionallight icon.asset
icons/generated/distancejoint2d icon.asset
icons/generated/echofilter icon.asset
icons/generated/edgecollider2d icon.asset
icons/generated/editorsettings icon.asset
icons/generated/favorite icon.asset
icons/generated/fixedjoint icon.asset
icons/generated/flare icon.asset
icons/generated/flarelayer icon.asset
icons/generated/folder icon.asset
icons/generated/folderempty icon.asset
icons/generated/folderfavorite icon.asset
icons/generated/font icon.asset
icons/generated/gamemanager icon.asset
icons/generated/gameobject icon.asset
icons/generated/gisraster icon.asset
icons/generated/gissplatdata icon.asset
icons/generated/gisterrain icon.asset
icons/generated/guilayer icon.asset
icons/generated/guiskin icon.asset
icons/generated/guitext icon.asset
icons/generated/guitexture icon.asset
icons/generated/halo icon.asset
icons/generated/highpassfilter icon.asset
icons/generated/hingejoint icon.asset
icons/generated/hingejoint2d icon.asset
icons/generated/horizontallayoutgroup icon.asset
icons/generated/humantemplate icon.asset
icons/generated/js script icon.asset
icons/generated/lensflare icon.asset
icons/generated/light icon.asset
icons/generated/lightmapparameters icon.asset
icons/generated/lightmapsnapshot icon.asset
icons/generated/lightprobegroup icon.asset
icons/generated/lightprobes icon.asset
icons/generated/linerenderer icon.asset
icons/generated/lodgroup icon.asset
icons/generated/lowpassfilter icon.asset
icons/generated/material icon.asset
icons/generated/mesh icon.asset
icons/generated/meshcollider icon.asset
icons/generated/meshfilter icon.asset
icons/generated/meshparticleemitter icon.asset
icons/generated/meshrenderer icon.asset
icons/generated/metafile icon.asset
icons/generated/microphone icon.asset
icons/generated/motion icon.asset
icons/generated/movietexture icon.asset
icons/generated/muscleclip icon.asset
icons/generated/navmeshagent icon.asset
icons/generated/navmeshdata icon.asset
icons/generated/navmeshobstacle icon.asset
icons/generated/networkview icon.asset
icons/generated/occlusionarea icon.asset
icons/generated/occlusionportal icon.asset
icons/generated/offmeshlink icon.asset
icons/generated/particleanimator icon.asset
icons/generated/particleemitter icon.asset
icons/generated/particlerenderer icon.asset
icons/generated/particlesystem icon.asset
icons/generated/physicmaterial icon.asset
icons/generated/physicsmaterial2d icon.asset
icons/generated/platformeffector2d icon.asset
icons/generated/pointeffector2d icon.asset
icons/generated/polygoncollider2d icon.asset
icons/generated/prefab icon.asset
icons/generated/prefabmodel icon.asset
icons/generated/prefabnormal icon.asset
icons/generated/proceduralmaterial icon.asset
icons/generated/projector icon.asset
icons/generated/raycastcollider icon.asset
icons/generated/recttransform icon.asset
icons/generated/reflectionprobe icon.asset
icons/generated/rendertexture icon.asset
icons/generated/reverbfilter icon.asset
icons/generated/rigidbody icon.asset
icons/generated/rigidbody2d icon.asset
icons/generated/sceneasset icon.asset
icons/generated/scriptableobject icon.asset
icons/generated/search icon.asset
icons/generated/shader icon.asset
icons/generated/shadervariantcollection icon.asset
icons/generated/skinnedmeshrenderer icon.asset
icons/generated/skybox icon.asset
icons/generated/sliderjoint2d icon.asset
icons/generated/speedtreemodel icon.asset
icons/generated/spherecollider icon.asset
icons/generated/spotlight icon.asset
icons/generated/springjoint icon.asset
icons/generated/springjoint2d icon.asset
icons/generated/sprite icon.asset
icons/generated/spritecollider icon.asset
icons/generated/spriterenderer icon.asset
icons/generated/substancearchive icon.asset
icons/generated/surfaceeffector2d icon.asset
icons/generated/terrain icon.asset
icons/generated/terraincollider icon.asset
icons/generated/terraindata icon.asset
icons/generated/textasset icon.asset
icons/generated/textmesh icon.asset
icons/generated/texture icon.asset
icons/generated/texture2d icon.asset
icons/generated/trailrenderer icon.asset
icons/generated/transform icon.asset

Так же для предварительного просмотра вы можете создать вот такое окно, и вызывать его через Window/Support/Embed Textures Viewer:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using UnityEditor;
using UnityEngine;

namespace UnityEditor
{
    public class EmbedResourcesViewer : EditorWindow
    {
        [MenuItem("Window/Support/Embed Textures Viewer")]
        public static void Create()
        {
            GetWindow<EmbedResourcesViewer>(true, "Embed Textures Viewer", true);
        }

        public int index = 0;
        public string find = "";
        public Vector2 scroll;
        public Vector2 scrollProperties;
        public void OnGUI()
        {
            var up = Event.current.type == EventType.keyDown && Event.current.keyCode == KeyCode.UpArrow;
            var down = Event.current.type == EventType.keyDown && Event.current.keyCode == KeyCode.DownArrow;
            GUILayout.BeginHorizontal(GUILayout.ExpandHeight(true));
            {
                GUILayout.BeginVertical(GUILayout.Width(300));
                {
                    find = EditorGUILayout.TextField("Find: ", find, GUILayout.Width(300));
                    showAssets = bundleTextures.Where(x => x.path.Contains(find.ToLower())).ToArray();
                    GUI.SetNextControlName("two");

                    scroll = GUILayout.BeginScrollView(scroll, GUILayout.Width(300));

                    var array = showAssets.Select(x => x.path).ToArray();
                    var command2 = new GUIStyle("CN EntryBackOdd") { margin = new RectOffset() };
                    index = GUILayout.SelectionGrid(Mathf.Clamp(index, 0, array.Length - 1), array, 1, command2);
                    if (index >= array.Length)
                        index = 0;
                    GUILayout.EndScrollView();
                    GUILayout.BeginHorizontal(GUILayout.Width(300));
                    if (index >= 0 && index < array.Length)
                    {
                        GUILayout.Label(showAssets[index].path, GUILayout.Width(250));
                        if (GUILayout.Button("copy", "minibutton", GUILayout.ExpandWidth(false)))
                            EditorGUIUtility.systemCopyBuffer = showAssets[index].path;
                    }
                    GUILayout.EndHorizontal();

                }
                GUILayout.EndVertical();
                GUILayout.BeginVertical();
                scrollProperties = GUILayout.BeginScrollView(scrollProperties);
                if (showAssets.Length != 0)
                {
                    if (index > 0 && index < showAssets.Length - 1)
                    {
                        var asset = showAssets[index].asset;
                        GUILayout.Label(asset.name + " (" + asset.width + "/" + asset.height + ")");
                        GUILayout.Box(new GUIContent(showAssets[index].asset), GUIStyle.none);
                    }
                }
                GUILayout.EndScrollView();
                GUILayout.EndVertical();
            }
            GUILayout.EndHorizontal();

            var e = Event.current;
            {
                if (up)
                {
                    index--;
                    if (index < 0)
                        index = 0;
                    GUIUtility.keyboardControl = 0;
                    e.Use();
                    Repaint();
                }
                if (down)
                {
                    index++;
                    if (index >= showAssets.Length)
                        index = showAssets.Length - 1;
                    GUIUtility.keyboardControl = 0;
                    e.Use();
                    Repaint();
                }
            }
        }

        private EmbedAsset[] showAssets = new EmbedAsset[0];

        private static EmbedAsset[] bundleTextures;

        static EmbedResourcesViewer()
        {
            var allEmbedAssets = AssetDatabase.LoadAllAssetsAtPath("Library/unity editor resources").ToList();
            var assetBundleObject = allEmbedAssets.FirstOrDefault(x => x is AssetBundle) as AssetBundle;
            if (assetBundleObject != null)
            {
                var paths = assetBundleObject.GetAllAssetNames();
                bundleTextures = paths.Select(x => new EmbedAsset
                {
                    path = x,
                    asset = EditorGUIUtility.Load(x) as Texture2D
                }).Where(x => x.asset != null).ToArray();
            }
            else
                bundleTextures = new EmbedAsset[0];
        }

        private class EmbedAsset
        {
            public string path;
            public Texture2D asset;
        }
    }
}

Достать превью

К сожалению, с превью все немного иначе, здесь есть определенные правила.
Во-первых, превью подгружаются асинхронно, потому могут быть временно недоступны.
Во-вторых, они действуют только на файлы, уже хранящиеся в папке проекта.

Чтобы получить превью вы должны сделать нечто аналогичное:

var previewIcon = AssetPreview.GetAssetPreview(prefab);

Так как подгрузка может быть асинхронной такое прямое выражение может быть недостаточным - придется делать вызовы в отдельный поток.

Учтите, что так как превью подгружается не всегда, то в качестве иконки вы будете подавать условие аля

var icon = previewIcon ?? defaultIcon;

Часто объекты, к которым вы хотите получить превью - достаются не совсем верно. Например. если у вас в руках gameObject от префаба - и вы попробуете получить его превью - ничего не выйдет.
Для таких объектов есть специальная команда PrefabUtility.FindPrefabRoot(), с помощью которой можно получить сам префаб.

Так же иконки могут не подгрузиться из-за маленького размера кеша, что исправляется командой AssetPreview.SetPreviewTextureCacheSize()

Смотрите также:


Комментарии



var icon = defaultIcon ?? previewIcon;

Может быть наоборот?

alexprey:

var icon = defaultIcon ?? previewIcon;

Может быть наоборот?

истинно так

Справка