[英]Is there any way to implement Audit Trails for user actions in .Net MVC
[英]Is there a way to draw less memory expensive trails?
我到目前為止在運氣還不錯的情況下在Unity Answers上發布了這個問題,所以我想我也可以在這里嘗試一下。
我正在從事一個涉及AI代理的項目,該項目要經過培訓才能在環境中導航,並且我想可視化隨着培訓的進行而變化的運動方式。 我首先使用內置組件TrailRenderer,但從當前培訓課程的結束到開始位置的跳轉都使我煩惱,因此我編寫了自己的自定義實現。
我希望自己的實現具有三種能力: 可以限制可見的痕跡的數量,並根據它們的相關性更改繪制的痕跡的alpha值,並且不包括跳轉(例如使用TrailRenderer組件時)。
下面顯示並詳細說明了實現,但是我認為在深入探討實現之前概述最大的麻煩是有意義的。
如我所見,目前我自己實施過程中最大的麻煩是,如果環境充滿挑戰,那么某些線索最終可能包含大量分數(迄今為止見證的最大分數為30000+)。足夠,這極大地減慢了培訓速度。 除了增加時間延遲,使新點僅每0.5秒增加一次,我不知道該如何改善。 但是,較大的時間延遲會導致可視化路徑中的誤差較大,因此會限制路徑提供的值。
在我的機器上進行培訓(500000步),無需進行跟蹤繪制,大約需要45分鍾。 通過實施繪制軌跡和0.5秒的延遲,220000個訓練步驟大約需要1.5個小時,之后我決定停止訓練。
我的實現包括兩個部分: 附加到代理的腳本,該腳本繪制當前路徑,並可能增加時間延遲。 第二部分不是腳本本身,而是AgentReset()方法的一部分,它有兩個作用; 在運行時添加/刪除路徑,並根據其相關性更改路徑的alpha,即最新路徑的alpha最高。
以下是附加到代理的腳本,
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class drawDynamicTrail : MonoBehaviour
{
private GameObject[] trails;
private int traceStep = 0;
private int traceNumber = 0;
private int currentTrace;
private LineRenderer lr;
private float timeToDraw = 0;
public bool drawTrails = false;
void Update()
{
if (drawTrails){
if (Time.time > timeToDraw)
{
trails = GameObject.FindGameObjectsWithTag("Trail");
if (trails.Length != traceNumber)
{
traceNumber = trails.Length;
traceStep = 0;
} else
{
currentTrace = traceNumber - 1;
lr = trails[currentTrace].GetComponent<LineRenderer>();
if (traceStep >= lr.positionCount)
{
lr.positionCount = traceStep + 1;
}
lr.SetPosition(traceStep,transform.position);
traceStep += 1;
}
timeToDraw = Time.time + 0.5f;
}
}
}
}
我很樂意在需要時提供整個AgentReset()方法,但是暫時將其遺漏了,因為我認為這並不是挑戰的源頭。
所有建議都受到高度贊賞。
常規性能提示:盡可能避免在“更新”中使用“ FindGameobject ...”。 在您的情況下,我認為線索列表正在增長,因此您需要對其進行更新,對嗎?
思路:
公開公開trails
或定義addTrail
方法-每當創建新的,帶有“ Trail”標簽的對象時都添加線索。 這應該更快,因為“ FindGameobject ...”將花費越來越長的時間,您在場景中擁有的對象越多。
您實際上對所有路徑感興趣嗎? 還是最新的就足夠了? 如果只想繪制最新的軌跡,請考慮新的Ringbuffer模式
舊路不會改變,對不對? 相機會移動嗎? 如果不是,則可以在紋理中繪制這些路徑,因此您只需在舊路徑上方繪制新路徑,而無需重新繪制舊路徑。 除了重新繪制紋理。 但這是恆定的 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.