コード例 #1
0
    IEnumerator FinalDestroyNextSubVoxel(int layer, int columnID, string subID)
    {
        //Debug.Log("finally destroying sub: '" + subID + "' determines shatter level: " + (subID.Split(',').Length - 1));

        Voxel v        = getSubVoxelAt(layer, columnID, subID);
        int   maxTries = 5;

        while (maxTries > 0 && v == null)
        {
            v = getSubVoxelAt(layer, columnID, subID);
            maxTries--;
            yield return(new WaitForSecondsRealtime(0.25f));
        }

        if (v != null)
        {
            if (v.isContainer)
            {
                Debug.LogError("tried deleting subvoxel at: " + subID + " found voxel container instead: " + v);
            }
            else
            {
                if (v.shatterLevel < MapManager.manager.shatters)
                {
                    StartCoroutine(v.ConvertToContainer());
                }
                else
                {
                    Destroy(v.gameObject);
                }
            }
        }
        else
        {
            Debug.LogError("failed to get voxel to destroy it. error in subvoxel storage or subvoxel does not exist; subid=" + subID);
        }
        yield return(new WaitForEndOfFrame());
    }