2015-11-22 41 views
0

好的,我創建了一些繼承自UObject的類。我可以在BP級別創建它(使用Construct對象節點)並將參考存儲在我的BP變量中。當我創建對象時,我將Outer設置爲self。所以擁有新創建對象的層級BP。現在我的問題是如何從內存中刪除這個對象?我試圖將BP變量設置爲null,但似乎我需要銷燬該級別才能釋放此對象。任何想法如何做到沒有破壞級別?如何使用藍圖刪除對象(不是演員)

回答

0

我在這一刻沒有進入UE4,但我希望這可以幫助/提示你一個正確的方向:

UObjects是由垃圾收集管理。要適當地創建UObject,請使用NewObject(),NewNamedObject()和ConstructObject()。可以使用Object Flags枚舉配置創建時UObject將由垃圾收集器處理的方式。 (如果您想了解有關UObject實例創建的更多信息,請訪問:hdtts.docs.unrealengine.com/latest/INT/Programming/UnrealArchitecture/Objects/Creation/index.html)

這樣,你不應該在UObject上調用new或者delete。如果不再需要UObject,通常意味着沒有對它的引用(這可能會有所不同,具體取決於UObject創建時使用的上下文和垃圾收集標誌)。在這種情況下,您可以運行ForceGarbageCollection()函數:

GetWorld() - > ForceGarbageCollection(true);

請注意,在某些情況下調用此方法可能會導致崩潰,特別是當對象已被垃圾收集器銷燬或值爲null時。

另外,如果您想了解更多關於虛幻對象處理,你可以去這裏:hhttps://docs.unrealengine.com/latest/INT/Programming/UnrealArchitecture/Objects/Optimizations/index.html

圖片來源:https://answers.unrealengine.com/questions/219430/explicitely-delete-a-uobject.html

Ps。 StackOverflow不允許我發佈兩個以上的鏈接,因爲我沒有足夠的聲譽......所以從我斷開的鏈接中刪除第一個'h',它會起作用。

+0

這是C++的答案,但我希望你能從blueprint找到相同的可調用函數。 – dekhadmai