Unity3D_Easy Grid Builder 使用说明(基本API文档)

 文档介绍如何使用 Easy Grid Builder Pro API

01. 命名空间

需要在脚本中添加 Easy Grid Builder Pro 命名空间才能使用其所有功能。

using SoulGames.EasyGridBuilderPro;

02. 接入网格系统

获取对场景中所有网格的引用。

private List<EasyGridBuilderPro> easyGridBuilderProList;

private void Start()
{
    easyGridBuilderProList = MultiGridManager.Instance.easyGridBuilderProList;
}

获取对场景中当前活动网格的引用。

private EasyGridBuilderPro currentActiveSystem;

private void Update()
{
    currentActiveSystem = MultiGridManager.Instance.activeGridSystem;
}

例:按名称获取对特定网格系统的引用。

using SoulGames.EasyGridBuilderPro;

private List<EasyGridBuilderPro> easyGridBuilderProList;
private EasyGridBuilderPro specificGrid;
private string specificGridName;

private void Start()
{
    easyGridBuilderProList = MultiGridManager.Instance.easyGridBuilderProList;
    foreach (EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
    {
        if(easyGridBuilderPro.name is specificGridName) 
        {
            specificGrid = easyGridBuilderPro;
        }
    }
}

03. 公共获取函数

例:获取对当前活动网格的网格宽度的引用。(当按下空格键时)

using SoulGames.EasyGridBuilderPro;

private EasyGridBuilderPro currentActiveSystem;
private int activeSystemGridWidth;

private void Update()
{
    currentActiveSystem = MultiGridManager.Instance.activeGridSystem;
    if (Input.GetKeyDown(KeyCode.Space))
    {
        activeSystemGridWidth = currentActiveSystem.GetGridWidth();
    }
}

 

/// 返回网格系统的 GridMode
currentActiveSystem.GetGridMode();

/// 返回网格系统的 GridAxis
currentActiveSystem.GetGridAxis();

/// 返回网格系统的 GridWidth
currentActiveSystem.GetGridWidth();

/// 返回网格系统的 GridLength
currentActiveSystem.GetGridLength();

/// 返回网格系统的 CellSize
currentActiveSystem.GetGridCellSize();

/// 返回网格系统的 GridOrigin
currentActiveSystem.GetGridOrigin();

/// 返回当前存储的 BuildableGridObjectTypeSOList
currentActiveSystem.GetBuildableGridObjectTypeSOList();

/// 返回当前存储的 BuildableGridObjectTypeSOList
currentActiveSystem.GetBuildableFreeObjectTypeSOList();

/// 返回当前活动垂直栅格系统的栅格索引
currentActiveSystem.GetActiveVerticalGridIndex();

/// 返回 Bertical Grids Count
currentActiveSystem.GetVerticalGridCount();

/// 返回网格系统的 GridHeight
currentActiveSystem.GetGridHeight();

/// 返回网格系统的唯一保存名称
currentActiveSystem.GetUniqueSaveName();

/// 返回网格系统的保存位置
currentActiveSystem.GetSaveLocation();

/// 返回当前可构建的可构建网格对象类型SO
currentActiveSystem.GetBuildableGridObjectTypeSO();

/// 返回当前可构建的可构建自由对象类型 SO
currentActiveSystem.GetBuildableFreeObjectTypeSO();

/// 按名称返回可构建网格对象类型 So
currentActiveSystem.GetBuildableGridObjectTypeSOFromName(string buildableGridObjectTypeSOName);

/// 按名称返回可构建的自由对象类型
currentActiveSystem.GetBuildableFreeObjectTypeSOFromName(string buildableFreeObjectTypeSOName);

/// 返回网格单元的世界位置。使用 Vector2Int 参数
currentActiveSystem.GetWorldPositionXZ(Vector2Int gridPosition) currentActiveSystem.GetWorldPositionXY(Vector2Int gridPosition) /// 返回网格单元格的网格位置(“网格索引”)。使用 Vector3 参数
currentActiveSystem.GetGridPositionXZ(Vector3 worldPosition) currentActiveSystem.GetGridPositionXY(Vector3 worldPosition) /// 返回网格单元的网格构建对象(网格索引)。使用 Vector3 参数或 Vector2Int 参数
currentActiveSystem.GetGridObjectXZ(Vector3 worldPosition) currentActiveSystem.GetGridObjectXZ(Vector2Int gridPosition) currentActiveSystem.GetGridObjectXY(Vector3 worldPosition) currentActiveSystem.GetGridObjectXY(Vector2Int gridPosition) /// 无论网格单元索引是否在固定网格内,返回 true 或 false
currentActiveSystem.IsValidGridPositionXZ(Vector2Int gridPosition) currentActiveSystem.IsValidGridPositionXZ(Vector2Int gridPosition)

 04. 公共集函数

例:将所有网格设置为 GridMode。(当按下空格键时)

using SoulGames.EasyGridBuilderPro;

private List<EasyGridBuilderPro> easyGridBuilderProList;
private GridMode gridMode = GridMode.None;

private void Start()
{
    easyGridBuilderProList = MultiGridManager.Instance.easyGridBuilderProList;
}

private void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        foreach(EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
        {
            easyGridBuilderPro.SetGridMode(gridMode);
        }
    }
}
/// 强制设置网格系统的 GridMode
/// <param name="gridMode">网格模式</param>
easyGridBuilderPro.SetGridMode(GridMode gridMode);

/// 设置网格系统的垂直网格
/// <param name="currentActiveGridIndex">垂直网格索引</param>
easyGridBuilderPro.SetActiveVerticalGrid(int currentActiveGridIndex);

/// 设置网格系统的垂直网格自动高度检测
/// <param name="setActive">启用或禁用</param>
easyGridBuilderPro.SetAutoDetectHeight(bool setActive);

/// 设置网格系统的 垂直网格更改高度与输入
/// <param name="setActive">启用或禁用</param>
easyGridBuilderPro.SetChangeHeightWithInput(bool setActive);

/// 设置网格系统的 UseBuildableDistance
/// <param name="enable">启用或禁用 UseBuildableDistance</param>
/// <param name="objectTransform">将对象变换进行距离检查,默认为 nul</param>
/// <param name="distanceMin">最小距离</param>
/// <param name="distanceMax">最大距离</param>
easyGridBuilderPro.SetUseBuildableDistance(bool enable, Transform objectTransform, float distanceMin, float distanceMax);

/// 设置网格系统的唯一保存名称
/// <param name="uniqueSaveName">名称</param>
currentActiveSystem.SetUniqueSaveName(string uniqueSaveName);

/// 设置网格系统的保存位置
/// <param name="saveLocation">保存位置</param>
easyGridBuilderPro.SetSaveLocation(string saveLocation);

/// 将可构建网格对象类型SO资产添加到网格系统
/// <param name="buildableGridObjectTypeSO">BuildableGridObjectTypeSO 资源</param>
/// <param name="checkIfAlreadyHas">在检查资产是否已经存在之前,如果存在,则忽略</param>
currentActiveSystem.AddBuildableGridObjectTypeSO(BuildableGridObjectTypeSO buildableGridObjectTypeSO, bool checkIfAlreadyHas);

/// 将可构建的自由对象类型SO资产添加到网格系统
/// <param name="buildableFreeObjectTypeSO">BuildableFreeObjectTypeSO 资源</param>
/// <param name="checkIfAlreadyHas">在检查资产是否已经存在之前,如果存在,则忽略</param>
currentActiveSystem.AddBuildableFreeObjectTypeSO(BuildableFreeObjectTypeSO buildableFreeObjectTypeSO, bool checkIfAlreadyHas);

/// 从网格系统中删除可构建网格对象类型SO资产
/// <param name="buildableGridObjectTypeSO">BuildableGridObjectTypeSO 资源</param>
currentActiveSystem.RemoveBuildableFreeObjectTypeSO(BuildableGridObjectTypeSO buildableGridObjectTypeSO);

/// 从网格系统中删除可构建的自由对象类型SO资产
/// <param name="buildableFreeObjectTypeSO">BuildableFreeObjectTypeSO 资源</param>
currentActiveSystem.RemoveBuildableFreeObjectTypeSO(BuildableFreeObjectTypeSO buildableFreeObjectTypeSO);

05. 输入功能

使用这些函数来调用 Easy Grid Builder Pro 输入,而不是使用 Easy Grid Builder Pro Inputs SO 资源。

例:调用输入函数来放置可构建对象。(当按下空格键时)

 

using SoulGames.EasyGridBuilderPro;

private List<EasyGridBuilderPro> easyGridBuilderProList;

private void Start()
{
    easyGridBuilderProList = MultiGridManager.Instance.easyGridBuilderProList;
}

private void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        foreach(EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
        {
            easyGridBuilderPro.TriggerBuildablePlacement();
            easyGridBuilderPro.TriggerBuildablePlacementCancelled();
        }
    }
}

 

// 重置 Grid Mode
foreach (EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
{
    easyGridBuilderPro.SetGridModeReset();
}

// 还需要在这些脚本中调用它
[SerializeField]private GridObjectSelector gridObjectSelector;
if (gridObjectSelector) gridObjectSelector.SetGridModeReset();
// 更改栅格垂直级别
foreach (EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
{
    easyGridBuilderPro.TriggerGridHeightChangeManually();
}

// 设置 Grid Mode Build
foreach (EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
{
    easyGridBuilderPro.SetGridModeBuilding();
}
// 开始可拼叠放置
foreach (EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
{
    easyGridBuilderPro.TriggerBuildablePlacement();
}
// 末端可拼叠放置
foreach (EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
{
    easyGridBuilderPro.TriggerBuildablePlacementCancelled();
}
// 滚动可构建列表
/// <param name="value">滚动方向的 Vector2 值</param>
foreach (EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
{
    easyGridBuilderPro.TriggerBuildableListScroll(Vector2() value);
}
// 开始重影对象左旋转
foreach (EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
{
    easyGridBuilderPro.TriggerGhostRotateLeft();
}
// 结束重影对象左旋转
foreach (EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
{
    easyGridBuilderPro.TriggerGhostRotateLeftCancelled();
}
// 开始向右旋转重影对象
foreach (EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
{
    easyGridBuilderPro.TriggerGhostRotateRight();
}
// 结束重影对象右旋转
foreach (EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
{
    easyGridBuilderPro.TriggerGhostRotateRightCancelled();
}
// Grid Mode 销毁
foreach (EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
{
    easyGridBuilderPro.SetGridModeDestruction();
}

// 建筑物销毁
foreach (EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
{
    easyGridBuilderPro.TriggerBuildableDestroy();
}

// Grid Mode 选择
gridObjectSelector.SetGridModeSelection();

// 建筑物选择
gridObjectSelector.TriggerBuildableSelection();

// 网格数据保存
foreach (EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
{
    easyGridBuilderPro.TriggerGridSave();
}

// 网格数据加载
foreach (EasyGridBuilderPro easyGridBuilderPro in easyGridBuilderProList)
{
    easyGridBuilderPro.TriggerGridLoad();
}

posted on 2025-08-25 11:46  考拉宝贝  阅读(22)  评论(0)    收藏  举报

导航