-
Notifications
You must be signed in to change notification settings - Fork 622
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
21 changed files
with
299 additions
and
204 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
--[[ | ||
说明: | ||
UMG对象的释放流程: | ||
1、调用self:Release(),解除LuaTable在C++侧的引用 | ||
2、确保LuaTable在Lua侧没有其他引用,触发LuaGC | ||
3、C++侧收到UObject_Delete回调,解除UMG在C++侧的引用 | ||
4、确保UMG在C++侧没有其他引用,触发UEGC | ||
小提示: | ||
使用控制台命令查看对象和类的引用情况: | ||
查看指定类的引用列表:Obj List Class=ReleaseUMG_Root_C | ||
查看指定对象的引用链:Obj Refs Name=ReleaseUMG_Root_C_0 | ||
]] -- | ||
|
||
require "UnLua" | ||
|
||
local Screen = require "Tutorials.Screen" | ||
|
||
local M = Class() | ||
|
||
local function print_intro() | ||
local msg = | ||
[[ | ||
使用以下按键进行一次强制垃圾回收: | ||
C:强制 C++ GC | ||
L:强制 Lua GC | ||
—— 本示例来自 "Content/Script/Tutorials.11_ReleaseUMG.lua" | ||
]] | ||
Screen.Print(msg) | ||
end | ||
|
||
function M:ReceiveBeginPlay() | ||
local widget_class = UE4.UClass.Load("/Game/Tutorials/11_ReleaseUMG/ReleaseUMG_Root.ReleaseUMG_Root_C") | ||
local widget_root = NewObject(widget_class, self) | ||
widget_root:AddToViewport() | ||
|
||
print_intro() | ||
end | ||
|
||
function M:L_Pressed() | ||
collectgarbage("collect") | ||
Screen.Print('collectgarbage("collect")') | ||
end | ||
|
||
function M:C_Pressed() | ||
UE4.UKismetSystemLibrary.CollectGarbage() | ||
Screen.Print("UKismetSystemLibrary.CollectGarbage()") | ||
end | ||
|
||
return M |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
require "UnLua" | ||
|
||
local M = Class() | ||
|
||
function M:Construct() | ||
print("ItemChild Construct") | ||
self.Button_Remove.OnClicked:Add(self, self.OnRemove) | ||
end | ||
|
||
function M:Setup(parent) | ||
self.parent = parent | ||
end | ||
|
||
function M:OnRemove() | ||
print("ItemChild Remove") | ||
self.parent:Remove() | ||
end | ||
|
||
function M:Destruct() | ||
print("ItemChild Destruct") | ||
self:Release() | ||
end | ||
|
||
return M |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
require "UnLua" | ||
|
||
local M = Class() | ||
|
||
function M:Construct() | ||
print("ItemParent Construct", self:GetName()) | ||
self.ItemChild:Setup(self) | ||
end | ||
|
||
function M:Remove() | ||
self:RemoveFromViewport() | ||
end | ||
|
||
function M:Destruct() | ||
print("ItemParent Destruct") | ||
self:Release() | ||
end | ||
|
||
return M |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
require "UnLua" | ||
|
||
local M = Class() | ||
|
||
function M:Construct() | ||
print("Root Construct") | ||
self.Button_AddNew.OnClicked:Add(self, self.OnAddNew) | ||
self.Button_ReleaseAll.OnClicked:Add(self, self.OnReleaseAll) | ||
end | ||
|
||
function M:OnAddNew() | ||
print("Root Add New") | ||
local widget_class = UE4.UClass.Load("/Game/Tutorials/11_ReleaseUMG/ReleaseUMG_ItemParent.ReleaseUMG_ItemParent_C") | ||
local widget = NewObject(widget_class, self) | ||
self.VerticalBox_Panel:AddChildToVerticalBox(widget) | ||
end | ||
|
||
function M:OnReleaseAll() | ||
self:RemoveFromViewport() | ||
end | ||
|
||
function M:Destruct() | ||
print("Root Destruct") | ||
self:Release() | ||
end | ||
|
||
return M |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Oops, something went wrong.