コード例 #1
0
        public Object Build(GameObject gameObject, ComponentElementBuilder previousBuilder)
        {
            component = previousBuilder?.component
                ? previousBuilder?.component
                : gameObject.AddComponent(currentType);

            foreach (var key in setters.Keys)
            {
                var value = valuesForSetters.ContainsKey(key)
                    ? valuesForSetters[key]
                    : null;

                var previousValue = previousBuilder?.valuesForSetters.ContainsKey(key) == true
                    ? previousBuilder?.valuesForSetters[key]
                    : null;

                if (previousValue != null && previousValue.Equals(value))
                {
                    continue;
                }

                ReflectionUtils.SetProperty(component, setters[key], value);
            }

            return(component);
        }
コード例 #2
0
        public ComponentElementBuilder <TComponent> AddComponent <TComponent>()
        {
            var component = new ComponentElementBuilder <TComponent>();

            this.components.Add(component);

            return(component);
        }
コード例 #3
0
        public Object Build(GameObject gameObject, ComponentElementBuilder previousBuilder)
        {
            component = previousBuilder?.component
                ? previousBuilder?.component
                : gameObject.AddComponent(currentType);

            foreach (var key in setters.Keys)
            {
                var value = valuesForSetters.ContainsKey(key)
                    ? valuesForSetters[key]
                    : valueFactoriesForSetters[key].DynamicInvoke();

                ReflectionUtils.SetProperty(component, setters[key], value);
            }

            return(component);
        }