Как изменить дочерние свойства родительских элементов? - PullRequest
1 голос
/ 02 июля 2019

Я делаю простую игру и не могу понять, как изменить цвета в коде. У меня есть объект родительской игры, к которому я планирую прикрепить скрипт для изменения цвета дочернего элемента.

Например, у меня есть это:

Parent:A
Childs in A = 1,2;

Я хочу получить все 2 элемента и изменить цвет первого дочернего элемента на черный, а второго на белый.

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

Я не знаю, как я могу заставить этих 2 детей в этом родителе изменить свойство.

Могу ли я назвать childs 1 и 2, а затем посмотреть на код для child с именем gameobject 1 и изменить свойство color, если я могу, как я могу это сделать?

1 Ответ

2 голосов
/ 03 июля 2019

Приведенная ниже часть кода представляет собой быстрый пример использования метода GetProperty.Просто используйте MyGetProperty и MySetProperty, как показано ниже.Помните, что переменные, на которые будет ссылаться строка, должны быть свойствами.

public class Parent {
        private int child1 = 0;
        private int child2 = 0;
        public int iChild1 {
            get {
                return child1; 
            }
            set {
                child1 = value;
            }
        }
        public int iChild2 {
            get {
                return child2;
            }
            set {
                child2 = value;
            }
        }

        public void MainMethod() { 
            MySetProperty("iChild1",1);
            MySetProperty("iChild2",2);
            string strOutput = String.Format("iChild1 = {0} iChild2 = {1}",MyGetPrperty("iChild1"), MyGetPrperty("iChild2"));
        }

        public object MyGetProperty(string strPropName)
        {
            Type myType = typeof(Parent);
            PropertyInfo myPropInfo = myType.GetProperty(strPropName);
            return myPropInfo.GetValue(this, null);
        }

        public void MySetProperty(string strPropName, object value)
        {
            Type myType = typeof(Parent);
            PropertyInfo myPropInfo = myType.GetProperty(strPropName);
            myPropInfo.SetValue(this, value, null);
        }

    }
...