Получатель / установщик на массиве JavaScript?

Вам нужно найти GameObject, который содержит компонент скрипта, на который вы планируете получить ссылку. Убедитесь, что GameObject уже находится в сцене, или Find вернет null.

 GameObject g = GameObject.Find("GameObject Name");

Затем вы можете схватить скрипт:

 BombDrop bScript = g.GetComponent();

Затем вы можете доступ к переменным и функциям скрипта.

 bScript.foo();

Я только что понял, что на тот же день я ответил на очень похожий вопрос: Не знаю, как получить здоровье врага


Я немного расскажу о вашем вопросе, так как я уже ответил на это.

Что ваш код делает, так это: «Посмотрите в мой GameObject для BombDropScript, большую часть времени сценарий не будет прикреплен к одному и тому же GameObject.

Также используйте setter и getter для maxBombs.

public class BombDrop : MonoBehaviour
{
    public void setMaxBombs(int amount)
    {
        maxBombs += amount;
    }

    public int getMaxBoms()
    {
        return maxBombs;
    }
}

30
задан Adam 18 January 2018 в 14:17
поделиться

4 ответа

Доступ к массивам не отличается от обычного доступа к свойствам. array[0] означает array['0'], поэтому вы можете определить свойство с именем '0' и перехватить через него доступ к первому элементу массива.

Однако это делает его непрактичным для всех массивов, кроме коротких, более или менее фиксированной длины. Вы не можете определить свойство для "всех имен, которые являются целыми числами" одним махом.

18
ответ дан 27 November 2019 в 23:35
поделиться

Вы можете добавить любые методы в массив , добавив их в Array.prototype . Вот пример, который добавляет геттер и сеттер

Array.prototype.get = function(index) {
  return this[index];
}

Array.prototype.set = function(index, value) {
  this[index] = value;
}
0
ответ дан 27 November 2019 в 23:35
поделиться

Почему бы не создать новый класс для внутренних объектов?

var a = new Car();

function Car()
{
   // here create the setters or getters necessary
}

А затем,

arr = new Array[a, new Car()]

Я думаю, вы уловили идею.

0
ответ дан 27 November 2019 в 23:35
поделиться

Надеюсь, это поможет.

Object.extend(Array.prototype, {
    _each: function(iterator) {
                    for (var i = 0; i < this.length; i++)
                    iterator(this[i]);
                },
    clear: function() {
                    this.length = 0;
                    return this;
                },
    first: function() {
                    return this[0];
                },
    last: function() {
                return this[this.length - 1];
                },
    compact: function() {
        return this.select(function(value) {
                                                return value != undefined || value != null;
                                                }
                                            );
        },
    flatten: function() {
            return this.inject([], function(array, value) {
                    return array.concat(value.constructor == Array ?
                        value.flatten() : [value]);
                    }
            );
        },
    without: function() {
        var values = $A(arguments);
                return this.select(function(value) {
                        return !values.include(value);
                }
            );
    },
    indexOf: function(object) {
        for (var i = 0; i < this.length; i++)
        if (this[i] == object) return i;
        return -1;
    },
    reverse: function(inline) {
            return (inline !== false ? this : this.toArray())._reverse();
        },
    shift: function() {
        var result = this[0];
        for (var i = 0; i < this.length - 1; i++)
        this[i] = this[i + 1];
        this.length--;
        return result;
    },
    inspect: function() {
            return '[' + this.map(Object.inspect).join(', ') + ']';
        }
    }
);
1
ответ дан 27 November 2019 в 23:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: