neikeq/GodotSharp

Node Instance Issue

SquishyMucus opened this issue · 3 comments

I'm trying to instance a node I created. The node 'BaseBall' is a within it's own scene and has a sprite.

On a new scene I'm trying to instance a ball (I'll want to have a few of these balls all over the place eventually).

public override void _Ready()
{
    GD.print("Setup New Node");
    // var myNode = GetNode("res://BaseBall") as BaseBall;
    // var myNode = GetNode("/root/BaseBall") as BaseBall;
    // var myNode = GetNode("res://root/BaseBall") as BaseBall;
    var myNode = GetNode("BaseBall") as BaseBall;
    if(myNode == null) 
    {
        GD.print("Node is NULL!");
    } 
}

I always get node as NULL.

As you can see from comments I've tried a few different versions.

I bet neikeq is going to want an example project to reproduce this. Also, did you try the equivelant code using GDScript? I find myself doing this because:

A) If I know I'm doing it right, and it isn't working in GDScript then it's possibly a Godot issue
B) If it's working in GDScript then you know for sure that your code is correct and that it's a C# issue

I was trying to get OS.MsecTicks() about a month ago and the game was just crashing. I thought it was a C# issue and was about to report it, but thought I might as well try it in GDScript first. Sure enough, Godot crashed using GDScript as well, so it wasn't a C# issue.

Hope that helps :)
Nathan

Yes, I can't reproduce so an example project would be great.

I'm not sure, you want to create a new instance of your scene right?
GetNode can only get nodes which are already in the scene tree/instanced.
To create a new instance you'll have to Godot.Load() the scene and use .instance() and AddChild(), just like in GDScript.
http://docs.godotengine.org/en/stable/learning/step_by_step/scripting_continued.html#instancing-scenes