Map Editor
- 충돌 타일 위치 파일을 생성한다.
- Unity 상단 메뉴의 Tools에 생성한다.
📄 MapEditor.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Tilemaps;
using System.IO;
#if UNITY_EDITOR
using UnityEditor;
#endif
public class MapEditor
{
#if UNITY_EDITOR
[MenuItem("Tools/GenerateMap %#g")]
private static void GenerateMap()
{
GenerateByPath("Assets/Resources/Map");
GenerateByPath("../Common/MapData");
}
private static void GenerateByPath(string pathPrefix)
{
GameObject[] gameObjects = Resources.LoadAll<GameObject>("Prefabs/Map");
foreach (GameObject go in gameObjects)
{
Tilemap tmBase = Util.FindChild<Tilemap>(go, "Tilemap_Base", true);
Tilemap tm = Util.FindChild<Tilemap>(go, "Tilemap_Collision", true);
using (var writer = File.CreateText($"{pathPrefix}/{go.name}.txt"))
{
writer.WriteLine(tmBase.cellBounds.xMin);
writer.WriteLine(tmBase.cellBounds.xMax);
writer.WriteLine(tmBase.cellBounds.yMin);
writer.WriteLine(tmBase.cellBounds.yMax);
for (int y = tmBase.cellBounds.yMax; y >= tmBase.cellBounds.yMin; y--)
{
for (int x = tmBase.cellBounds.xMin; x <= tmBase.cellBounds.xMax; x++)
{
TileBase tile = tm.GetTile(new Vector3Int(x, y, 0));
if (tile != null)
writer.Write("1");
else
writer.Write("0");
}
writer.WriteLine();
}
}
}
}
#endif
}
📄 Map_001.txt
-23
23
-10
14
00000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000
01111111111111111111111111111111111111111111110
00000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000
00000000000000000000000000000000011000000000000
00000000000000000000000000111111100000000000000
00000000000010000000000000111111100000000000000
00000000000000000000000000111111100000000000000
00000000000000100000000000111111100000000000000
00000000000000000000000000111111100000000000000
00000000000000000000000000111111100000000000000
00000000000000000000000000111111100000000000000
00000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000
MultiplayersBuildAndRun
- Unity 프로젝트를 Win64로 빌드 후 실행한다.
- Unity 상단 메뉴의 Tools에 생성한다.
📄 MapEditor.cs
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class MultiplayersBuildAndRun
{
[MenuItem("Tools/Run Multiplayer/2 Players")]
static void PerformWin64Build2()
{
PerformWin64Build(2);
}
[MenuItem("Tools/Run Multiplayer/3 Players")]
static void PerformWin64Build3()
{
PerformWin64Build(3);
}
[MenuItem("Tools/Run Multiplayer/4 Players")]
static void PerformWin64Build4()
{
PerformWin64Build(4);
}
static void PerformWin64Build(int playerCount)
{
EditorUserBuildSettings.SwitchActiveBuildTarget(
BuildTargetGroup.Standalone, BuildTarget.StandaloneWindows);
for (int i = 1; i <= playerCount; i++)
{
BuildPipeline.BuildPlayer(GetScenePaths(),
"Builds/Win64/" + GetProjectName() + i.ToString() + "/" + GetProjectName() + i.ToString() + ".exe",
BuildTarget.StandaloneWindows64, BuildOptions.AutoRunPlayer);
}
}
static string GetProjectName()
{
string[] s = Application.dataPath.Split('/');
return s[s.Length - 2];
}
static string[] GetScenePaths()
{
string[] scenes = new string[EditorBuildSettings.scenes.Length];
for (int i = 0; i < scenes.Length; i++)
{
scenes[i] = EditorBuildSettings.scenes[i].path;
}
return scenes;
}
}