每当玩家进行特定动作时,我都会有一个声音提示。我已经把它打得很好但除了我想要使用的资源来自配置文件而不是硬编码。
所以我在我的类中添加了一个名为MonsterNoiseSoundCue的属性,如下所示:
var config SoundCue MonsterNoiseSoundCue;
然后在DefaultProperties部分中,我将以下内容添加到我创建的对象中,然后将其添加到我的pawn的components集合中。
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;
由于某种原因,它没有构建说“不允许对对象变量使用'config'。”有没有人知道另一种方法来解决这个问题?
答案 0 :(得分:2)
“不允许对对象变量使用'config'。”消息是UnrealEngine 3中的一个更改。
我现在无法测试,而且我是UT2004脚本编写者,但我会尝试这个:
var SoundCue MonsterNoiseSoundCue;
var config string MonsterNoiseSoundCueName;
在PreBeginPlay函数(或类似函数)中,使用此函数获取提示:
MonsterNoiseSoundCue = SoundCue(DynamicLoadObject(MonsterNoiseSoundCueName, class'SoundCue'));
如果声音提示不存在,您应该在日志中收到警告。
答案 1 :(得分:0)
您使用什么功能播放声音?
PlaySound会动态创建一个AudioComponent,因此您不需要在defaultproperties部分中创建一个组件。
var config SoundCue MonsterNoiseSoundCue;
然后当你的行动发生时:
function OnMonsterAction()
{
PlaySound(MonsterNoiseSoundCue);
}
答案 2 :(得分:0)
潜在选项是动态组件 '动态创建组件
要动态创建组件的实例,请使用UnrealScript new运算符并调用actor的AttachComponent方法将新组件附加到actor。'
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方法。