教程示例遊戲雖實現 A* 但無法輕鬆設定障礙物,且整張大圖移動導致不斷切割效能差。地圖切片可達性能最大優化:按需載入、依主角位置僅顯示特定部分。開發地圖編輯器迫在眉睫。
通用編輯器需適應所有尺寸地圖,選 ScrollViewer 為承載容器,雙 ScrollViewer 協同:一個載地圖、一個背景透明載障礙物網格:

雙方尺寸、捲軸位置時刻協同一致:
private void ObstructionViewer_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
ScrollViewer scrollViewer = sender as ScrollViewer;
MapViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset);
MapViewer.ScrollToHorizontalOffset(scrollViewer.HorizontalOffset);
}
1) 載入地圖
private void LoadMap_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog loadMap = new OpenFileDialog()
{
CheckFileExists = true, CheckPathExists = true,
Multiselect = false, Filter = "圖像文件(*.jpg,*.png)|*.jpg;*.png"
};
loadMap.FileOk += loadMap_FileOk;
loadMap.ShowDialog();
}
下節將實作網格佈局、障礙物繪製與 A* 模擬。