pull/2/head
jaysunxiao 2022-01-17 18:33:01 +08:00
parent 1e083ddca5
commit 4026a6580a
4 changed files with 92 additions and 1 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/owner01.png-3d92fe1a6d5d29fa03c5310ffc95f2cf.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://doc/demo03_lifecycle/image/owner01.png"
dest_files=[ "res://.import/owner01.png-3d92fe1a6d5d29fa03c5310ffc95f2cf.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

View File

@ -104,3 +104,40 @@ var subNode4 = get_tree().root.find_node("SubNode2", true, false)
![Image text](image/physics.png) ![Image text](image/physics.png)
![Image text](image/physics-1.png) ![Image text](image/physics-1.png)
# 6. Parent和Owner
- Parent
- 一个节点的Parent就是场景树上它的父级
- Owner
- 如果不修改默认Owner的话可以把它视为节点所在场景的顶部节点如果该节点本身就是顶部节点那么它的Owner为null
- 静态场景结构中默认的Owner
![Image text](image/owner01.png)
```
extends Node
class_name TestNode
func _ready():
var parent_name = "NULL"
var owner_name = "NULL"
if get_parent() != null:
parent_name = get_parent().name
if owner != null:
owner_name = owner.name
print(name + "'s parent is <" + parent_name + "> and it's owner is <" + owner_name + ">" )
```
```
node_3's parent is <node_2> and it's owner is <node_0>
node_2's parent is <node_1> and it's owner is <node_0>
node_1's parent is <node_0> and it's owner is <node_0>
node_0's parent is <root> and it's owner is <NULL>
```
- 动态创建的节点的Owner是null

View File

@ -53,8 +53,28 @@ disconnect("mySignal", 1, 2)
# 3. 异步回调yield # 3. 异步回调yield
- yield, to produce a result, answer, or piece of information立即结束当前函数调用无需等待 - yield, to produce a result, answer, or piece of information立即结束当前函数调用无需等待
```
其本质,就是能让一个函数在执行过程中暂停(挂起),然后在接收到恢复指令以后继续执行的机制。
```
- yield(obj, signal),函数立即返回,并且保存当前执行的位置和状态 - yield(obj, signal),函数立即返回,并且保存当前执行的位置和状态
```
GDScriptFunctionState yield( Object object=null, String signal="" )
```
- yield返回GDScriptFunctionState类型对象类似于Java的CompleteFuture - yield返回GDScriptFunctionState类型对象类似于Java的CompleteFuture
```
GDScriptFunctionState 是记录一个协程状态的对象,实际上它就代表(引用)着该协程。
```
- resume恢复GDScriptFunctionState保存的调用函数状态 - resume恢复GDScriptFunctionState保存的调用函数状态
![Image text](image/yield.JPG) ![Image text](image/yield.JPG)
- yield的三种用法
1. yield()和resmue()组合yield()来挂起用resmue()来恢复
2. yield(节点对象N,信号S)的形式,把这个协程(即 GDScriptFunctionState注册为 节点N上信号S的接收者当 节点N发出信号S以后函数会恢复执行。
3. yield(协程对象C,"completed")的形式协程失效即GDScriptFunctionState的is_valid为false以后它会释放一个"completed"信号,用这个信号恢复上一层协程。