Ver Fonte

Fix get_path() error when calling get_node()

Haoyu Qiu há 2 anos atrás
pai
commit
64c20a51c1
1 ficheiros alterados com 13 adições e 2 exclusões
  1. 13 2
      scene/main/node.cpp

+ 13 - 2
scene/main/node.cpp

@@ -1341,12 +1341,23 @@ Node *Node::get_node(const NodePath &p_path) const {
 	Node *node = get_node_or_null(p_path);
 
 	if (unlikely(!node)) {
+		// Try to get a clear description of this node in the error message.
+		String desc;
+		if (is_inside_tree()) {
+			desc = get_path();
+		} else {
+			desc = get_name();
+			if (desc.is_empty()) {
+				desc = get_class();
+			}
+		}
+
 		if (p_path.is_absolute()) {
 			ERR_FAIL_V_MSG(nullptr,
-					vformat(R"(Node not found: "%s" (absolute path attempted from "%s").)", p_path, get_path()));
+					vformat(R"(Node not found: "%s" (absolute path attempted from "%s").)", p_path, desc));
 		} else {
 			ERR_FAIL_V_MSG(nullptr,
-					vformat(R"(Node not found: "%s" (relative to "%s").)", p_path, get_path()));
+					vformat(R"(Node not found: "%s" (relative to "%s").)", p_path, desc));
 		}
 	}