Pull to refresh
1
0
Руслан @Stridemann

User

Send message
С моими зубами- беру 2 штуки.
У меня в момент запуска хром все 4 ядра 4GHz под 100% жрет (1-2 сек), иногда аж курсор залипает). Может потому что плагинами обвешал. Но все равно им доволен)
Скорее жабоскрипт чем C# (вырвиглазное объявление переменных)
Т. е. для робота ограниченный обзор не повод для уменьшения скорости?)
Зачем менять какие-то файлы если можно считывать с памяти и вносить изменения?
В некоторых местах можно же обойтись без foreach и for и сделать на делегатах?

private readonly List<MyClass> myList = new List<MyClass>();
private Action InvokeMyFunc = delegate { };

public void Add(MyClass entity)
{
    myList.Add(entity);
    InvokeMyFunc += entity.MyFunc;
}
public void Remove(MyClass entity)
{
    myList.Remove(entity);
    InvokeMyFunc -= entity.MyFunc;
}

public void InvokeAllMyFunc()
{
    InvokeMyFunc();//Вместо foreach цикла
}



public class MyClass
{
    public void MyFunc() { }
}


И мне очень интересен вопрос инициализации делегата чтоб в коде не проверять его на нулл. Почему так не делают? Инвокнуть пустой делегат дольше проверки на нулл?
В том и дело что ничем. Больше места чем толку. Полимерная купюра хорошая штука. Вместо этих «кэпсов» думаю можно было бы несколько таких выпустить.
Я вообще мелочь не ношу, мешает, в кошелек не положишь- выпадет, звенит, телефон царапает. Правда евро монеты как исключение, на них хоть купить можно что-то)
Для ограбления банка придется 3 мусоровоза подгонять.

Но зато ими можно будет в кэпсы играть.
Это нужно будет с кульком монет ходить вместо кошелька?
Через https://images.google.com пробовали? Чисто интересно…

UPD. «Google и TinEye ничего не нашли» только увидел…
Не могу найти тот проект, всё обыскал.
С кода там в основном положение камер (зеркальная позиция от глаз (камеры) игрока) с обратной стороны порталов, изображение с которых накладывается по маске шейдером через Graphics.Blit при постобработке.
Сначала снимал одной камерой ч/б маску накладывания, потом само изображение, далее в шейдере в альфу изображения ложил маску и накладывал на экран при постобработке. Шейдер вручную писался.
Когда-то делал порталы, только в 3Д www.youtube.com/watch?v=wh7UcmlXeQs
Шейдеры, камеры + постобработка (накладывание результата))
Кто-то догадался совместить мед. оборудование стоматолога и компьютер :)
Первое с чем я столкнулся — как реализовать выпадающий список в редакторе. Находя первые темы на форумах в интернете, казалось, что это не так то просто, но терпение привело меня к использованию обычного перечисления

Вы можете овверайдить отрисовку проперти атрибутами, т. е. использовать CustomPropertyDrawer.

Код:
Scripts/TestCompAttribute.cs
using System;
using UnityEngine;

[AttributeUsage(AttributeTargets.Field)]
public class TestCompAttribute : PropertyAttribute
{
    //Запишем значения здесь чтоб было в одном месте
    //Но эти значения можно черпать от куда угодно
    public static string[] AttributeValues = new string[]
    {
        "None",
        "First",
        "Second"
    };
}


Scripts/TestComponent.cs
using UnityEngine;
public class TestComponent : MonoBehaviour
{
    [TestComp] //Атрибутом указываем, что у нас кастомная отрисовка этой проперти. (PS. TestComp вышло от TestCompAttribute без слова Attribute)
    public string componentName;

    public int variableComponentFirst;
    public int variableComponentSecond;
}


Scripts/Editor/TestComponentEditor.cs:
using UnityEditor;
using UnityEngine;

//Указываем что будем оверрайдить стандартые отрисовки проперти помеченных TestComp атрибутом
[CustomPropertyDrawer(typeof(TestCompAttribute))]
public class TestCompAttribute_Drawer : PropertyDrawer
{
    //Храним значение
    private int _selected = -1;

    //Оверрайдим стандартную отрисовку проперти
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        //Запускаем для будущей проверки изменений редактирования проперти
        EditorGUI.BeginChangeCheck();

        //Ищем значение в списке вариантов
        _selected = GetItemIndex(property.stringValue);

        //Выпадающий список
        _selected = EditorGUI.Popup(position, label.text.Replace("Component Name", "Select component type:"), _selected, TestCompAttribute.AttributeValues);

        //Проверяем был ли изменено проперти
        if (EditorGUI.EndChangeCheck())
        {
            //Устанавливаем в переменную скрипта componentName новое значение
            property.stringValue = TestCompAttribute.AttributeValues[_selected];
            property.serializedObject.ApplyModifiedProperties();

            //EditorUtility.SetDirty(property.serializedObject.targetObject);
        }
    }

    private int GetItemIndex(string id)
    {
        for (int i = 0; i < TestCompAttribute.AttributeValues.Length; ++i)
        {
            if (Equals(TestCompAttribute.AttributeValues[i], id))
                return i;
        }
        return 0;
    }
}


//Этим атрибутом мы объявляем какой компонент подвергнется редактированию
[CustomEditor(typeof(TestComponent))]
[CanEditMultipleObjects]

public class TestComponentEditor : Editor
{
    TestComponent subject;

    SerializedProperty compName;
    SerializedProperty varCompFirst;
    SerializedProperty varCompSecond;

    //Передаём этому скрипту компонент и необходимые в редакторе поля
    void OnEnable()
    {
        subject = target as TestComponent;

        compName = serializedObject.FindProperty("componentName");

        varCompFirst = serializedObject.FindProperty("variableComponentFirst");
        varCompSecond = serializedObject.FindProperty("variableComponentSecond");
    }

    //Переопределяем событие отрисовки компонента
    public override void OnInspectorGUI()
    {
        //Метод обязателен в начале. После него редактор компонента станет пустым и
        //далее мы с нуля отрисовываем его интерфейс.
        serializedObject.Update();

        //Вывод в редактор текстового поля (который при отрисовке будет оверрайдится нашим TestCompAttribute_Drawer
        EditorGUILayout.PropertyField(compName);

        //Проверка выбранного пункта в выпадающем меню, 
        if (subject.componentName == TestCompAttribute.AttributeValues[1])
        {
            //Вывод в редактор слайдера
            EditorGUILayout.IntSlider(varCompFirst, 0, 100, new GUIContent("Variable First"));
        }
        else if (subject.componentName == TestCompAttribute.AttributeValues[2])
        {
            EditorGUILayout.IntSlider(varCompSecond, 0, 100, new GUIContent("Variable Second"));
        }

        //Метод обязателен в конце
        serializedObject.ApplyModifiedProperties();
    }
}


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

image

Что-то типа фотонный софтпроцессор?)
Ну похоже он просто вывел картинку иконки юнити на дисплей)

А разработка игр под микроконтроллер это совсем другая песня)
image
В данном случае согласен.
Правда производитель RTC обещает 10 лет работы от батарейки… типа скорее батарейка накроется чем модуль ее разрядит…
Запускал я этот DS1307 на ардуино… Как-то глючно работает, то выдает восьмерки… то вообще не понятные даты.
Долго разбирался в чем дело. В результате пришел к выводу, что DS1307 нужно подключать к питанию 3.3v, а не к 5v. Тогда заработало всё отлично.

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity