好的,我創建了一些繼承自UObject的類。我可以在BP級別創建它(使用Construct對象節點)並將參考存儲在我的BP變量中。當我創建對象時,我將Outer設置爲self。所以擁有新創建對象的層級BP。現在我的問題是如何從內存中刪除這個對象?我試圖將BP變量設置爲null,但似乎我需要銷燬該級別才能釋放此對象。任何想法如何做到沒有破壞級別?如何使用藍圖刪除對象(不是演員)
回答
我在這一刻沒有進入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',它會起作用。
我設法解決這個問題,我也得到了虛幻的答案給出樞紐一些線索:https://answers.unrealengine.com/questions/337525/how-to-delete-object-using-blueprints.html
所以基本上答案是:設置的參考變量設置爲null,並在某個時刻GC將其釋放。但不要指望立即有這個。
- 1. 演員對象
- 2. 演員對象
- 3. 正在刪除演員並未刪除所有演員
- 4. Akka:如何刪除兒童演員
- 5. 成員方法如何刪除對象?
- 6. 演員對象INT不起作用
- 7. 演員對象測試
- 8. 如何使用RestKit刪除對象?
- 9. 如何使用python刪除json對象?
- 10. 意圖演員不拆除/替換
- 11. libgdx - 在刪除另一個演員後未添加演員
- 12. Django:如何讓管理員不刪除相關對象?
- 13. 如何刪除對象b,設置對象a後,但不刪除對象a?
- 14. 如何在Fabric.js中刪除對象周圍的藍色邊框
- 15. PHP OOP演員作用於對象
- 16. 對象刪除:使用父母還是不使用
- 17. 休眠 - 刪除對象引用而不刪除對象
- 18. 不能使用Three.JS刪除對象
- 19. 使用NSPredicate刪除對象
- 20. 虛幻引擎4:演員中的多個演員,在AI藍圖
- 21. 的Greenfoot演員被刪除後編譯
- 22. 必須刪除意向演員嗎?
- 23. Gridworld從演員中刪除顏色
- 24. 每個模擬對象一個演員,還是一個經理演員?
- 25. 如何分配對象而不是密鑰如何刪除localstorage?
- 26. 使用opencv,如何刪除透明圖像中的非對象?
- 27. 如何使用圖形API來刪除對象
- 28. 如何刪除Excel.Name對象?
- 29. 如何刪除此對象?
- 30. 如何刪除QML對象
這是C++的答案,但我希望你能從blueprint找到相同的可調用函數。 – dekhadmai