2011-02-04 71 views
1

我有一個聲音提示,我希望玩家每當玩家做出特定的動作。我已經把它打得很好,但是我想讓所使用的資源來自配置文件,而不是硬編碼。在Unrealscript中如何爲類中的資源設置組件屬性的配置值?

所以我加了一個屬性上我的課叫做MonsterNoiseSoundCue如下:

var config SoundCue MonsterNoiseSoundCue; 

然後在默認屬性部分添加以下到我創建對象,然後再加入組分中收集我的棋子。

Begin Object Class=AudioComponent Name=MonsterActivatedSound1 
     bAutoPlay=false 
     SoundCue=MonsterNoiseSoundCue// This variable is a configured value. SoundCue'CastleAudio.UI.UI_StopTouchToMove_Cue' 
    End Object 
    Components.Add(MonsterActivatedSound1); 
    MonsterActivatedSound = MonsterActivatedSound1; 

由於某種原因,它沒有建立「不允許使用'配置'與對象變量'。有誰知道另一種方法來解決這個問題嗎?

+0

可能屬於http://gamedev.stackexchange.com? – tenpn 2011-10-19 08:52:05

回答

2

「不允許在對象變量中使用'config'。」消息是虛幻引擎的變化3.

我現在不能測試和我是一個UT2004編劇,但我會嘗試這個辦法:

var SoundCue MonsterNoiseSoundCue; 
var config string MonsterNoiseSoundCueName; 

在你PreBeginPlay功能(或類似),用此來得到提示:

MonsterNoiseSoundCue = SoundCue(DynamicLoadObject(MonsterNoiseSoundCueName, class'SoundCue')); 

如果聲音提示不存在,您應該在日誌中發出警告。

+0

我只注意到cue在音頻組件中獲取了引用,所以像這樣的東西可能不得不被用來代替: `MonsterActivatedSound1.SoundCue = SoundCue(DynamicLoadObject(/ * ... * /));`` – pdinklag 2011-02-04 06:08:10

0

你用什麼函數來播放聲音?

PlaySound將即時創建AudioComponent,因此您不需要在defaultproperties部分中具有組件。

var config SoundCue MonsterNoiseSoundCue; 

那麼當你的動作發生:

function OnMonsterAction() 
{ 
    PlaySound(MonsterNoiseSoundCue); 
} 
0

潛在的選擇是動態的組件 「動態創建的組件

要動態創建組件的一個實例,使用虛幻新的運營商和呼叫演員的AttachComponent方法將新組件附加到演員。'

simulated event PostBeginPlay() 
{ 
    local AudioComponent AudioComponent; 
    Super.PostBeginPlay(); 

    AudioComponent = new(self) class'AudioComponent'; 
    AudioComponent.SoundCue = Cue;//var(audio) SoundCue Cue 
    AudioComponent.bAutoPlay=true; // !!! 
    AttachComponent(AudioComponent); // Attach copm. to actor's copm. array 
    // ..... 
} 

要分離並釋放先前附加的組件,請使用actor的DetachComponent方法。

http://wiki.beyondunreal.com/UE3:AudioComponent_(UDK)

相關問題