Зависло, потому что юнити работает в одном потоке и вы его зациклили в while (scoreBonus == true). А корутина начнёт работать только когда ваш вызов метода OnMouseDown завершиться. Соответственно проверки надо делать в Update
1. Не имеет отношение к tile-серверу. Обратитесь к документации leaflet или что там у вас;
2. Создать несколько стилей отображения и соответственно загружать какой вам надо.
2.1. Либо если у вас там векторные тайлы, то можно отключить их отображение на клиенте.
Либо ты знаешь математическую зависимость и можешь рассчитать каждый пиксель (по сути нужен цвет пикселя) в любой момент времени между формой круг и квадрат, и тогда ты пишешь шейдер.
Либо не выпендриваться и сделать покадровую анимацию. Судя по твоему примеру хватить 3-4 кадров.
Рассчитывайте, что проблемы будут. Второй это часть MapJS и предназначена для его работы. А первый, это как раз публичный сервис, если вам нужны тайлы.
Странно, что вы нашли бобра, но не смогли воспроизвести пример, где видно, что никакой source не заполняется, а иконка это часть html, который маркером и показывается.
А тот source, насколько я понимаю, нужен для указание источника фич для маркеров.
Это просто мало банальной практики. Примерно как в математике, мало уметь складывать и умножать, надо нарешать пулл задач, чтобы мочь применять свои знания на практике.
И потом, система компонентов Unity это не совсем то ООП.
Можно дообучать, только не как ты предложил, добавить 20, а не полном наборе - все 30. Ну либо ты сильно потеряешь в качестве определения первых 10.
Симбиоз из нескольких сеток делают, но обычно они определяют одно и тоже, просто отличаются своей внутренней архитектурой, и сетки компенсируют слабые стороны друг друг-друга.