地图编辑器第一版

This commit is contained in:
xiekaidong 2023-06-09 17:35:27 +08:00
parent a13ae659ab
commit a79d051903
8 changed files with 1030 additions and 0 deletions

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0db9ae993e0bba941a6bfe7227aff6bd
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,538 @@
using System.Text.RegularExpressions;
using System;
using System.Linq.Expressions;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace BFEditor
{
public class BoardEditorWindow : EditorWindow {
// private static void ShowWindow() {
// var window = GetWindow<BoardEditorWindow>();
// window.titleContent = new GUIContent("BoardWindow");
// window.Show();
// }
const string BOARD_EXCEL_KEY = "bf_board_excel_key";
const string BOARD_GRID_TYPE_KEY = "bf_board_grid_type_key";
const int gridCount = 49;
string battleImgDirectory = "Assets/arts/textures/ui/battle/";
string boardFilepath;
string boardGridTypePath;
string boardFiledName = "board";
string randomTypeStr = "";
int curIndex = 1;
Dictionary<int, Dictionary<string, string>> boardGridTypeDict = new Dictionary<int, Dictionary<string, string>>();
Dictionary<int, JArray> boardDict = new Dictionary<int, JArray>();
Dictionary<int, JArray> outPutBoardDict = new Dictionary<int, JArray>();
Dictionary<string, Texture> imgDict = new Dictionary<string, Texture>();
bool loadExcelOver = false;
Dictionary<int, string> elementTypeImgDict = new Dictionary<int, string>(){
[1] = "red_1",
[2] = "yellow_1",
[3] = "green_1",
[4] = "blue_1",
[5] = "purple_1"
};
Texture boardImg;
private void OnEnable()
{
loadExcelOver = false;
boardFilepath = GetBoardExcelPath();
if (boardFilepath.Equals(""))
{
boardFilepath = "选择配置表路径";
}
boardGridTypePath = GetBoardGridTypePath();
if (boardGridTypePath.Equals(""))
{
boardGridTypePath = "选择grid_type配置表路径";
}
string[] paths = Directory.GetFiles(battleImgDirectory);
foreach(var path in paths)
{
if(!path.EndsWith(".meta"))
{
string formatPath = Path.GetFileNameWithoutExtension(path);
imgDict[formatPath] = AssetDatabase.LoadAssetAtPath<Texture>(path);
}
}
boardImg = AssetDatabase.LoadAssetAtPath<Texture>("Assets/arts/textures/background/battle_common/chessboard_1.png");
}
string GetBoardExcelPath()
{
return PlayerPrefs.GetString(BOARD_EXCEL_KEY, "");
}
void SetBoardExcelPath(string path)
{
PlayerPrefs.SetString(BOARD_EXCEL_KEY, path);
}
string GetBoardGridTypePath()
{
return PlayerPrefs.GetString(BOARD_GRID_TYPE_KEY, "");
}
void SetBoardGridTypePath(string path)
{
PlayerPrefs.SetString(BOARD_GRID_TYPE_KEY, path);
}
BoardEditorWindow()
{
this.titleContent = new GUIContent("棋盘编辑器");
}
private void OnGUI() {
DrawBaseInfo();
DragBoard();
}
void DrawBaseInfo()
{
GUILayout.BeginVertical();
GUILayout.Space(10);
GUILayout.BeginHorizontal();
GUILayout.Label("grid_type 路径", GUILayout.Width(100));
GUILayout.Space(10);
GUILayout.TextField(boardGridTypePath, GUILayout.Width(300));
if (GUILayout.Button("选择", GUILayout.Width(80)))
{
string openPath = EditorUtility.OpenFilePanel("选择配置表", GetBoardGridTypePath(), "");
if (openPath.CompareTo("") != 0)
{
boardGridTypePath = openPath;
SetBoardGridTypePath(openPath);
}
}
GUILayout.EndHorizontal();
GUILayout.Space(10);
GUILayout.BeginHorizontal();
GUILayout.Label("配置表路径", GUILayout.Width(100));
GUILayout.Space(10);
GUILayout.TextField(boardFilepath, GUILayout.Width(300));
if (GUILayout.Button("选择", GUILayout.Width(80)))
{
string openPath = EditorUtility.OpenFilePanel("选择配置表", GetBoardExcelPath(), "");
if (openPath.CompareTo("") != 0)
{
boardFilepath = openPath;
SetBoardExcelPath(openPath);
}
}
GUILayout.EndHorizontal();
GUILayout.Space(10);
GUILayout.BeginHorizontal();
GUILayout.Label("字段名称", GUILayout.Width(100));
GUILayout.Space(10);
boardFiledName = GUILayout.TextField(boardFiledName, GUILayout.Width(200));
GUILayout.EndHorizontal();
GUILayout.Space(10);
if (GUILayout.Button("加载棋盘", GUILayout.Width(80)))
{
LoadBoardExcel();
}
GUILayout.BeginHorizontal();
if (!IsInNewBoard())
{
if (GUILayout.Button("上一张", GUILayout.Width(80)))
{
showSwitchBoardSaveDialog(Math.Max(curIndex - 1, 1));
}
}
GUILayout.BeginHorizontal(GUILayout.Width(80));
GUIStyle style = new GUIStyle(GUI.skin.label);
style.alignment = TextAnchor.MiddleCenter;
GUILayout.Label("当前编号id = ", style);
showSwitchBoardSaveDialog(int.Parse(GUILayout.TextField(curIndex.ToString(), GUILayout.Width(40))));
GUILayout.EndHorizontal();
if (!IsInNewBoard())
{
if (GUILayout.Button("下一张", GUILayout.Width(80)))
{
showSwitchBoardSaveDialog(Math.Min(curIndex + 1, boardDict.Count));
}
}
if (GUILayout.Button("复制当前棋盘", GUILayout.Width(80)))
{
if (!boardDict.ContainsKey(curIndex))
{
return;
}
JArray jo = boardDict[curIndex];
GUIUtility.systemCopyBuffer = JsonConvert.SerializeObject(jo);
}
if (GUILayout.Button("粘贴棋盘", GUILayout.Width(80)))
{
JArray jo = (JArray)JsonConvert.DeserializeObject(GUIUtility.systemCopyBuffer);
if (jo == null)
{
return;
}
boardDict[curIndex] = jo;
}
if (!IsInNewBoard())
{
if (GUILayout.Button("新建棋盘", GUILayout.Width(80)))
{
curIndex = outPutBoardDict.Count + 1;
boardDict[curIndex] = new JArray();
for (int i = 0; i < gridCount; i++)
{
JArray unit = (JArray)JsonConvert.DeserializeObject("[0, 0]");
boardDict[curIndex].Add(unit);
}
}
}
else
{
if (GUILayout.Button("退出新建棋盘", GUILayout.Width(80)))
{
boardDict.Remove(curIndex);
curIndex = outPutBoardDict.Count;
}
if (GUILayout.Button("保存当前棋盘", GUILayout.Width(80)))
{
SaveBoard(curIndex);
}
}
GUILayout.EndHorizontal();
GUILayout.EndVertical();
GUILayout.BeginArea(new Rect(730, 500, 500, 100));
GUILayout.BeginVertical();
GUILayout.Label("随机类型和数量[类型,数量] 空格 [类型,数量]");
randomTypeStr = GUILayout.TextField(randomTypeStr, GUILayout.Width(500));
if(GUILayout.Button("生成随机棋盘", GUILayout.Width(80)))
{
string[] units = randomTypeStr.Split('[');
Dictionary<int, int> dict = new Dictionary<int, int>();
for (int i = 0; i < units.Length; i++)
{
string formatStr = units[i].Replace("[", "").Replace("]", "").Replace(" ", "");
string[] unitList = formatStr.Split(',');
if (unitList.Length >= 2)
{
dict[int.Parse(unitList[0])] = int.Parse(unitList[1]);
}
}
List<int> list = new List<int>();
for (int i = 0; i < gridCount; i++)
{
list.Add(i);
}
Debug.Log(JsonConvert.SerializeObject(dict));
JArray ja = new JArray();
for (int i = 0; i < gridCount; i++)
{
JArray unit = (JArray)JsonConvert.DeserializeObject("[0, 0]");
ja.Add(unit);
}
foreach (int gridType in dict.Keys)
{
for(int i = 0; i < dict[gridType]; i++)
{
int index = UnityEngine.Random.Range(0, list.Count);
ja[list[index]][0] = gridType;
list.RemoveAt(index);
}
}
boardDict[curIndex] = ja;
}
GUILayout.EndArea();
if(GUI.Button(new Rect(1050, 10, 100, 30), "导出到Excel"))
{
if (CheckBoardChanged(curIndex))
{
switch (EditorUtility.DisplayDialogComplex("提示", "当前棋盘已经改变,是否保存", "确定", "放弃", "再次确认"))
{
case 0:
SaveBoard(curIndex);
SaveBoardExcel();
break;
case 1:
AbortBoard(curIndex);
SaveBoardExcel();
break;
case 2:
break;
default:
break;
}
}
else
{
SaveBoardExcel();
}
}
}
void LoadBoardExcel()
{
var desktopDir = System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory);
var tempPath = System.IO.Path.Combine(desktopDir, "BoardEditorTemp.txt");
string relitivePath = Application.dataPath;
relitivePath = relitivePath.Remove(relitivePath.Length - 6, 6);
string pythonToolPath = relitivePath + "Tools/tranexcel_new";
// 读取grid_type配置表
BFEditorUtils.RunCommond("python", "load_board.py " + tempPath + " " + boardGridTypePath, pythonToolPath);
string boardGridTypeJson = File.ReadAllText(tempPath);
JObject jsonObj = (JObject)JsonConvert.DeserializeObject(boardGridTypeJson);
foreach (var item in jsonObj)
{
int key = int.Parse(item.Key);
Dictionary<string, string> dict = new Dictionary<string, string>();
foreach (var item2 in (JObject)item.Value)
{
dict[item2.Key] = item2.Value.ToString();
}
boardGridTypeDict[key] = dict;
}
// 读取boardFile配置表
BFEditorUtils.RunCommond("python", "load_board.py " + tempPath + " " + boardFilepath, pythonToolPath);
string boardFileJson = File.ReadAllText(tempPath);
jsonObj = (JObject)JsonConvert.DeserializeObject(boardFileJson);
foreach (var item in jsonObj){
if (item.Value[boardFiledName] != null)
{
int key = int.Parse(item.Key);
boardDict[key] = copyBoard((JArray)item.Value[boardFiledName]);
outPutBoardDict[key] = copyBoard((JArray)item.Value[boardFiledName]);
}
}
loadExcelOver = true;
}
void SaveBoardExcel()
{
var desktopDir = System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory);
var tempPath = System.IO.Path.Combine(desktopDir, "BoardEditorTemp.txt");
Dictionary<int, Dictionary<string, JArray>> output = new Dictionary<int, Dictionary<string, JArray>>();
foreach(int key in outPutBoardDict.Keys)
{
output[key] = new Dictionary<string, JArray>();
output[key][boardFiledName] = copyBoard(outPutBoardDict[key]);
}
string relitivePath = Application.dataPath;
relitivePath = relitivePath.Remove(relitivePath.Length - 6, 6);
string pythonToolPath = relitivePath + "Tools/tranexcel_new";
File.WriteAllText(tempPath, JsonConvert.SerializeObject(output));
BFEditorUtils.RunCommond("python", "save_board.py " + tempPath + " " + boardFilepath, pythonToolPath);
}
void DragBoard()
{
Texture img;
GUI.DrawTexture(new Rect(0, 150, 702, 702), boardImg);
if(!loadExcelOver)
{
return;
}
int startOffset = 22;
int textureWidth = 94;
if (!boardDict.ContainsKey(curIndex))
{
return;
}
GUILayout.BeginArea(new Rect(0, 150, 702, 702));
GUILayout.BeginVertical();
JArray jo = boardDict[curIndex];
int posIndex = 0;
for (int row = 1; row <= 7; row++) {
GUILayout.BeginHorizontal();
for (int col = 1; col <= 7; col++) {
JArray gridInfo = (JArray)jo[posIndex];
if(gridInfo.Count < 2)
{
continue;
}
int gridType = (int)gridInfo[0];
int gridElementType = (int)gridInfo[1];
if(!boardGridTypeDict.ContainsKey(gridType))
{
continue;
}
// 绘制元素
if (elementTypeImgDict.ContainsKey(gridElementType))
{
img = imgDict[elementTypeImgDict[gridElementType]];
GUI.DrawTexture(new Rect(startOffset + (col - 1) * textureWidth, startOffset + (row - 1) * textureWidth, textureWidth, textureWidth), img);
}
// 绘制类型
if(boardGridTypeDict[gridType].ContainsKey("icon"))
{
string icon = boardGridTypeDict[gridType]["icon"];
if (imgDict.ContainsKey(icon))
{
img = imgDict[icon];
GUI.DrawTexture(new Rect(startOffset + (col - 1) * textureWidth, startOffset + (row - 1) * textureWidth, textureWidth, textureWidth), img);
}
}
posIndex++;
}
GUILayout.EndHorizontal();
}
GUILayout.EndVertical();
GUILayout.EndArea();
GUILayout.BeginArea(new Rect(730, 150, 510, 550));
GUILayout.BeginVertical();
GUILayout.BeginHorizontal();
GUILayout.Label("棋盘配置信息", GUILayout.Width(100), GUILayout.Height(30));
GUILayout.EndHorizontal();
posIndex = 0;
for (int row = 1; row <= 7; row++) {
GUILayout.BeginHorizontal();
for (int col = 1; col <= 7; col++) {
JArray gridInfo = (JArray)jo[posIndex];
if(gridInfo.Count < 2)
{
continue;
}
gridInfo[0] = int.Parse(GUILayout.TextField(gridInfo[0].ToString(), GUILayout.Width(25)));
gridInfo[1] = int.Parse(GUILayout.TextField(gridInfo[1].ToString(), GUILayout.Width(25)));
GUILayout.Space(10);
posIndex++;
}
GUILayout.EndHorizontal();
GUILayout.Space(10);
}
GUILayout.EndVertical();
GUILayout.EndArea();
}
bool CheckBoardChanged(int index)
{
if(boardDict.ContainsKey(index) && outPutBoardDict.ContainsKey(index))
{
if(outPutBoardDict[index].Count != boardDict[index].Count)
{
return true;
}
for (int i = 0; i < boardDict[index].Count; i++)
{
JArray tArray = (JArray)boardDict[index][i];
JArray tArray2 = (JArray)outPutBoardDict[index][i];
if (tArray.Count != tArray2.Count)
{
return true;
}
for (int j = 0; j < tArray.Count; j++)
{
if (tArray[j].ToString() != tArray2[j].ToString())
{
return true;
}
}
}
}
return false;
}
void SaveBoard(int index)
{
if(!boardDict.ContainsKey(index))
{
return;
}
outPutBoardDict[index] = copyBoard(boardDict[index]);
}
void AbortBoard(int index)
{
if(!outPutBoardDict.ContainsKey(index))
{
boardDict.Remove(index);
return;
}
boardDict[index] = copyBoard(outPutBoardDict[index]);
}
void showSwitchBoardSaveDialog(int targetIndex)
{
if (IsInNewBoard())
{
return;
}
if (targetIndex == curIndex)
{
return;
}
if (CheckBoardChanged(curIndex))
{
switch (EditorUtility.DisplayDialogComplex("提示", "当前棋盘已经改变,是否保存", "确定", "放弃", "再次确认"))
{
case 0:
SaveBoard(curIndex);
curIndex = targetIndex;
break;
case 1:
AbortBoard(curIndex);
curIndex = targetIndex;
break;
case 2:
break;
default:
break;
}
}
else
{
curIndex = targetIndex;
}
}
JArray copyBoard(JArray targetArray)
{
JArray resultArray = new JArray();
for (int i = 0; i < targetArray.Count; i++)
{
JArray unit = new JArray();
resultArray.Add(unit);
JArray temp = (JArray)targetArray[i];
for (int j = 0; j < temp.Count; j++)
{
unit.Add(int.Parse(temp[j].ToString()));
}
}
return resultArray;
}
bool IsInNewBoard()
{
if(!boardDict.ContainsKey(curIndex) && !outPutBoardDict.ContainsKey(curIndex))
{
return false;
}
return !outPutBoardDict.ContainsKey(curIndex);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 339fc40f64b402d4bb60e77d94902487
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -100,5 +100,12 @@ namespace BFEditor
index++; index++;
} }
} }
[MenuItem("其他工具/棋盘编辑器", false, 9)]
public static void CreateBoardEditorWindow()
{
var window = (BoardEditorWindow)EditorWindow.GetWindowWithRect(typeof(BoardEditorWindow), new Rect(Screen.width / 2, Screen.height / 2, 1200, 850), true);
window.Show();
}
} }
} }

View File

@ -0,0 +1,377 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 12
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 256
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 1
m_PVRDenoiserTypeDirect: 1
m_PVRDenoiserTypeIndirect: 1
m_PVRDenoiserTypeAO: 1
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_LightingSettings: {fileID: 0}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1001 &255378347
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 581222997}
m_Modifications:
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_RootOrder
value: 2
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_AnchorMax.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4165930251451731960, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8889665677046596496, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
propertyPath: m_Name
value: battle_ui
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 1f0a4fee1adac4647bb28d0ae5db612f, type: 3}
--- !u!1001 &581222996
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 379821213967434738, guid: ac54530c57342254290353ac147bd91d, type: 3}
propertyPath: m_RootOrder
value: 1
objectReference: {fileID: 0}
- target: {fileID: 379821213967434738, guid: ac54530c57342254290353ac147bd91d, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 379821213967434738, guid: ac54530c57342254290353ac147bd91d, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 379821213967434738, guid: ac54530c57342254290353ac147bd91d, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 379821213967434738, guid: ac54530c57342254290353ac147bd91d, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 379821213967434738, guid: ac54530c57342254290353ac147bd91d, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 379821213967434738, guid: ac54530c57342254290353ac147bd91d, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 379821213967434738, guid: ac54530c57342254290353ac147bd91d, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 379821213967434738, guid: ac54530c57342254290353ac147bd91d, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 379821213967434738, guid: ac54530c57342254290353ac147bd91d, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 379821213967434738, guid: ac54530c57342254290353ac147bd91d, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1255030095349129672, guid: ac54530c57342254290353ac147bd91d, type: 3}
propertyPath: m_Name
value: ui_root
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: ac54530c57342254290353ac147bd91d, type: 3}
--- !u!224 &581222997 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 2290935117655172272, guid: ac54530c57342254290353ac147bd91d, type: 3}
m_PrefabInstance: {fileID: 581222996}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1478717503
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1478717505}
- component: {fileID: 1478717504}
m_Layer: 0
m_Name: Directional Light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &1478717504
Light:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1478717503}
m_Enabled: 1
serializedVersion: 10
m_Type: 1
m_Shape: 0
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1
m_Range: 10
m_SpotAngle: 30
m_InnerSpotAngle: 21.80208
m_CookieSize: 10
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_CullingMatrixOverride:
e00: 1
e01: 0
e02: 0
e03: 0
e10: 0
e11: 1
e12: 0
e13: 0
e20: 0
e21: 0
e22: 1
e23: 0
e30: 0
e31: 0
e32: 0
e33: 1
m_UseCullingMatrixOverride: 0
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingLayerMask: 1
m_Lightmapping: 4
m_LightShadowCasterMode: 0
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 6570
m_UseColorTemperature: 0
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &1478717505
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1478717503}
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 57e2e18001c74264c99e83e575cf13c7
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,37 @@
# -*- encoding: utf-8 -*-
import os
import sys
import excute
import json
import type_deal
import io
import os
current_file_path = os.path.split(os.path.realpath(__file__))[0]
site_packages_path = os.path.abspath(os.path.join(current_file_path, "../site-packages"))
sys.path.append(site_packages_path)
reload(sys)
from openpyxl import load_workbook
if __name__ == "__main__" :
av = sys.argv
tempPath = av[1]
xlsname = av[2]
wb = load_workbook(xlsname)
data = {}
for sheet in wb:
maxRow = sheet.max_row
maxColumn = sheet.max_column
for row in range(5, maxRow + 1):
data[sheet.cell(row, 1).value] = {}
t = data[sheet.cell(row, 1).value]
for column in range(2, maxColumn + 1):
key = sheet.cell(2, column).value
# print(type_deal.get_type_from_square(sheet.cell(4, column).value))
if key == "default" and sheet.cell(row, column).value != None:
v = str(sheet.cell(row, column).value)
t[sheet.cell(3, column).value] = type_deal.to_data(v)
break
wb.close()
open(tempPath, 'w').write(json.dumps(data))

View File

@ -0,0 +1,45 @@
# -*- encoding: utf-8 -*-
import os
import sys
import excute
import json
import type_deal
import io
import os
current_file_path = os.path.split(os.path.realpath(__file__))[0]
site_packages_path = os.path.abspath(os.path.join(current_file_path, "../site-packages"))
sys.path.append(site_packages_path)
reload(sys)
from openpyxl import load_workbook
if __name__ == "__main__" :
av = sys.argv
jsonStr = open(av[1], 'r').read()
boardDict = json.loads(jsonStr)
filedName = None
count = 1
for key in boardDict:
for value in boardDict[key]:
filedName = value
break
count += 1
xlsname = av[2]
wb = load_workbook(xlsname)
data = {}
for sheet in wb:
maxRow = sheet.max_row
maxColumn = sheet.max_column
column = 2
for col in range(2, maxColumn + 1):
if sheet.cell(3, col).value == filedName:
column = col
for id in range(1, count):
index = int(id)
row = index + 4
sheet.cell(row, 1).value = index
sheet.cell(row, column).value = str(boardDict[str(index)][filedName])
break
wb.save(xlsname)
wb.close()
print("导出成功!")