Буквально самый простой способ исправить NullReferenceExeption имеет два пути. Если у вас есть GameObject, например, с прикрепленным скриптом и переменной с именем rb (rigidbody), эта переменная начнет пустую, когда вы начнете игру. Вот почему вы получаете NullReferenceExeption, потому что на компьютере нет данных, хранящихся в этой переменной.
В качестве примера я буду использовать переменную RigidBody. Мы можем добавить данные действительно легко на самом деле несколькими способами:
rb = GetComponent<Rigidbody>();
. Эта строка кода работает лучше всего под ваши функции Start()
или Awake()
. rb = AddComponent<RigidBody>();
Дальнейшие заметки: если вы хотите, чтобы единство добавлялось компонент для вашего объекта, и вы, возможно, забыли добавить его, вы можете ввести [RequireComponent(typeof(RigidBody))]
над объявлением класса (пробел ниже всех ваших приложений). Наслаждайтесь и получайте удовольствие от игр!
В настоящее время это невозможно сделать с Maps API V3. Рассмотрите возможность подачи запроса функции здесь:
Я почти уверен, что можно хотя бы противодействовать импульсу. Кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь! Для простоты, например, предположим, что ваш контейнер карты имеет width
из 100vw
и height
из 100vh
. Вы просто вызываете getCenter()
в функции, вызываемой событием mouseup
, а затем используйте эти координаты сразу setCenter()
?
function initMap(){
...
var win = window;
google.maps.event.addDomListener(win, 'mouseup', setCoords);
function setCoords(){
var x = myMap.getCenter();
var lat = x.lat();
var lng = x.lng();
myMap.addListener('center_changed', function(lat, lng){
myMap.setCenter(new google.maps.LatLng(lat, lng));
};
};
. На самом деле код работает, но кикер что он работает только один раз до тех пор, пока браузер не станет, по-видимому, перегружен и не выдает ошибку. Uncaught RangeError: превышен максимальный размер стека вызовов.
Не уверен, что делать сейчас.
Подробнее об этом здесь .
Сегодня я столкнулся с этой же проблемой, и некоторые пользовательские Div разворачиваются над картой, которую нужно переместить в Map Movement. Моя перепозиция работала нормально, пока пользователь полностью остановился после перетаскивания, прежде чем позволить мыши перейти (так что не будет никакого импульса), но если бы вы просто быстро потянули и выпустили div, это закончится немного.
Чтобы исправить это, я подключился к событию перетаскивания и событию бездействия:
var map = /* All the map config */
var stickyCenter = map.getCenter();
/* ... Code ... */
google.maps.event.addListener(map, 'drag', function(){ stickyCenter = map.getCenter(); });
google.maps.event.addListener(map, 'idle', function() { map.setCenter(stickyCenter); });
Что происходит, так это после того, как вы перетащили и карта остановилась (после импульса ) карта «привязывается» к месту.
Если привязка слишком внезапная, возможно, возможно, что-то изменится или изменит движение. Надеюсь, что это помогает, но это не идеально, но это способ обратить вспять импульс из события перетаскивания.
Используйте недокументированную опцию disablePanMomentum
, например:
new google.maps.Map(document.getElementById(id), {
disablePanMomentum: true,
backgroundColor: 'none',
disableDefaultUI: true,
center: {
lat: 40.674,
lng: -73.945
},
zoom: 2,
...