• Разработка игр для Android, Ios. UE4 или Unity3d?

    Dimusikus
    @Dimusikus
    Любитель
    Я тоже когдато стардал подобным вопросом. Решение:
    А Вы попробуйте какое нибудь небольшое тестовое приложение закомпилить под Android на этих движках! И сразу поймёте что Ваш выбор это Unity3D, так как в UE без геморроя и бубна компиляция не делается.
    Представьте Вы изучете двиг, вложите время в создание проекта, и наткнётесь на непонятные баги компиляции....вот обидно будет. У меня в Юньке компиляция приложений заработала "из коробки" на всех моих четырёх машинах.
    UE компилиться отказался везде!! и тратить своё личное драгоценное время на выяснения причин смысла нет, абсолютно.
    Ответ написан
    Комментировать
  • (Пример из Unity3d) Проблема с понимаем типов в C#, как оно работает?

    ArXen42
    @ArXen42
    Если очень грубо, moveObject это указатель. Где-то там, в глубине, это IntPtr, обычно являющийся 64 или 32 битным числом. И изначально это число будет равно null (т.е. все нули или какое-нибудь другое условное обозначение "ничего").
    Перед тем как "отдать" этот объект вам (т.е. начать вызывать Start, Update и прочие методы), Unity, как было указано выше, "скрытно и незаметно" присвоит этому полю значение, указывающее на объект, который вы поставили в инспекторе.
    Ответ написан
    Комментировать
  • (Пример из Unity3d) Проблема с понимаем типов в C#, как оно работает?

    GavriKos
    @GavriKos Куратор тега Unity
    При старте скрипта юнити положит в ваш moveObject то, что вы перетащили туда в инспекторе. Скрытно и незаметно.
    Ответ написан
    3 комментария
  • (Пример из Unity3d) Проблема с понимаем типов в C#, как оно работает?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    а оператор new мы не использовали

    Например, так:
    using System;
    using System.Reflection;
    
    public class Program
    {
    	public static void Main()
    	{
    		MoveObject obj = UnityFactory.GetInstance<MoveObject>();
    		
    		obj.moveObject.SayHello();
    	}
    }
    
    
    public class GameObject
    {
    	private string name;
    	
    	public GameObject()
    	{
    		name = "John";
    	}
    	
    	public void SayHello() {
    		Console.WriteLine("Hello! My name is " + name );
    	}
    }
    
    
    public class MoveObject
    {
        public GameObject moveObject;
    }
    
    
    public class UnityFactory {
        public static T GetInstance<T>() where T: new()
    	{
    		
    		// Создадим экземпляр основного класса
            T instance = (T)Activator.CreateInstance(typeof(T));
    		
    		// Инициализируем его открытые поля
            FieldInfo[] fields = typeof(T).GetFields();
    		
            foreach (FieldInfo field in fields)
            {
                object fieldValue = Activator.CreateInstance(field.FieldType);
                field.SetValue(instance, fieldValue);
            }
    		
    		return instance;
        }
    }
    Ответ написан
    Комментировать