Comments (3)
Hi there! Don't worry, there's no need to apologize ^^
In Lua, whenever you use method notation object:method(...)
, it is actually syntactic sugar for object.method(object, ...)
.
In the same manner, defining a function as function object:method(...) end
is syntactic sugar for function object.method(self, ...) end
.
Note here that self
is just the name of the parameter and you can actually pass whatever value you want to it. If you called Test.Foo(1)
, the self
parameter would have the value of 1
, so that it would print 1
, for example.
This is just how Lua works.
In the code you posted, you are calling Test:Foo()
, which in turn is the same as Test.Foo(Test)
.
When Foo
executes, the value passed to the parameter self
is the table Test
, which is not the same object as the variable self
you have in _ready
.
To call Foo
with the same object as you have in _ready
, you just have to call it as self:Foo()
, which would be the same as self.Foo(self)
, instead of Test:Foo()
.
This way, the value passed to Foo
's self
parameter is the same self
as you have in _ready
.
Since the variable self
in _ready
is an instance of your Test
script, every method in Test
will be available, including Foo
and _ready
, as well as all other methods from Navigation2D, which it extends.
Feel free to reply and/or ask more about this or other stuff, I'm glad to help!
Have a wonderful day and year yourself =D
Just in case you're interested in behind the scenes, the script instance self
is also a table, but one that defines a __tostring
method that uses it's owner object for getting the string. That's why print(self)
prints something like [Navigation2D:1234]
.
from godot-lua-pluginscript.
Ooooooh, thats right! That makes a lot of sense! I used self:Function()
in a couple of my other scripts and it worked fine. I was a little confused because it was working on other scripts I had written but not this one specifically. Thank you so much for the thorough, well written, quick response! I absolutely love this plugin, and I would love to support you and your work! I am going to setup an account on LibrePay.
from godot-lua-pluginscript.
I was a little confused because it was working on other scripts I had written but not this one specifically.
Hehe, that happens. More than we would like, unfortunately =P
That reminds me of a quote that was something like: "I really hate this damned machine. It never does quite what I want, but only what I tell it".
Thank you so much for the thorough, well written, quick response!
No problem! The more information we can get, the best it is to understand what happened. We all learn together as well ^^
I absolutely love this plugin
I'm really glad to hear read that! That's what motivates working on this further. Well, that and I actually plan to use Lua + FFI in some Godot projects that I haven't started yet. Maybe this year, who knows?
and I would love to support you and your work
Thank you, I really appreciate that ^^ I've added a donation link from PayPal directly, might be easier for some people.
from godot-lua-pluginscript.
Related Issues (20)
- Passing data between GD.yield() and resume() HOT 1
- Array:sort_custom Usage HOT 4
- Scripts Inherited By Scenes All Share Variables HOT 2
- Does this work with Godot 4 alpha / nightly? HOT 9
- key press or simulating keyboard HOT 5
- Scripts not reloading in editor HOT 3
- WebAssembly / HTML5 target HOT 3
- Reasoning behind not supporting multithreading in lua? HOT 3
- Runtime scripting HOT 4
- Do you know what the problem could be loading a multithreading library called effil? HOT 3
- cannot load this plugin due to "attempt to call a nil value" HOT 8
- load plugin first time has some errors. HOT 2
- "undefined symbol: lua_gettop" when attempting to load luasocket HOT 9
- `remote` keyword? HOT 1
- Get Lua script instances while unboxing Object Variants
- Plugin not working in Godot 4.0 HOT 2
- Unable to execute text from textEdit's text property with loadstring() HOT 1
- Mono: Core API Hash Mismatch Error. HOT 4
- Can't use the extension HOT 3
- cant use the plugin HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from godot-lua-pluginscript.