EllanJiang/GameFramework · error · GameFrameworkException

Name of data node is invalid.

Error message

Name of data node is invalid.

What it means

DataNode.Create throws 'Name of data node is invalid.' when the given node name fails IsValidName (null, empty, or containing illegal path characters like the path separator). Static Create is used by GetOrAddChild, so an invalid segment anywhere in a hierarchical path surfaces here. The library validates names to keep path parsing (split by '/') unambiguous.

Solutions

  1. Validate the name with DataNode.IsValidName(name) before calling Create
  2. Check every path segment when paths are built from multiple variables
  3. Ensure the node name is non-empty and contains no path separator characters

Example fix

// before
IDataNode node = DataNode.Create(name, parent);
// after
if (DataNode.IsValidName(name))
{
    IDataNode node = DataNode.Create(name, parent);
}
Defensive patterns

Strategy: validation

Validate before calling

if (!DataNode.IsValidName(name))
{
    Log.Error($"Invalid data node name: '{name}'");
    return null;
}

Type guard

bool ValidSegment(string s) => !string.IsNullOrEmpty(s) && !s.Contains("/");

Try / catch

try { node = DataNode.Create(name, parent); }
catch (GameFrameworkException) { Log.Error($"Bad data node name '{name}'"); node = null; }

Prevention

When it happens

Trigger: Calling DataNode.Create("", parent) or Create(null, parent); GetOrAddChild receiving a name with the separator character or whitespace-only content; building a path with a stray leading/trailing/duplicate separator producing an empty segment.

Common situations: Path strings assembled from variables where one segment is empty (e.g. string.Join with a null element); using a config/variable name containing '/'; typos producing empty segments like 'a//b'.

Understand the failure class

Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.

Related errors


AI-assisted analysis of EllanJiang/GameFramework@d0c010b051 (2026-09-15). Data as JSON: /api/errors/9938fce0e30d0b89. Report an issue: GitHub.

Appendix: source

Thrown at GameFramework/DataNode/DataNodeManager.DataNode.cs:44

            public DataNode()
            {
                m_Name = null;
                m_Data = null;
                m_Parent = null;
                m_Childs = null;
            }

            /// <summary>
            /// 创建数据结点。
            /// </summary>
            /// <param name="name">数据结点名称。</param>
            /// <param name="parent">父数据结点。</param>
            /// <returns>创建的数据结点。</returns>
            public static DataNode Create(string name, DataNode parent)
            {
                if (!IsValidName(name))
                {
                    throw new GameFrameworkException("Name of data node is invalid.");
                }

                DataNode node = ReferencePool.Acquire<DataNode>();
                node.m_Name = name;
                node.m_Parent = parent;
                return node;
            }

            /// <summary>
            /// 获取数据结点的名称。
            /// </summary>
            public string Name
            {
                get
                {
                    return m_Name;
                }
            }

View on GitHub (pinned to d0c010b051)