Вам нужно найти 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;
}
}
Доступ к массивам не отличается от обычного доступа к свойствам. array[0]
означает array['0']
, поэтому вы можете определить свойство с именем '0'
и перехватить через него доступ к первому элементу массива.
Однако это делает его непрактичным для всех массивов, кроме коротких, более или менее фиксированной длины. Вы не можете определить свойство для "всех имен, которые являются целыми числами" одним махом.
Вы можете добавить любые методы в массив
, добавив их в Array.prototype
. Вот пример, который добавляет геттер и сеттер
Array.prototype.get = function(index) {
return this[index];
}
Array.prototype.set = function(index, value) {
this[index] = value;
}
Почему бы не создать новый класс для внутренних объектов?
var a = new Car();
function Car()
{
// here create the setters or getters necessary
}
А затем,
arr = new Array[a, new Car()]
Я думаю, вы уловили идею.
Надеюсь, это поможет.
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(', ') + ']';
}
}
);