В Unrealscript, как у меня есть значение конфигурации для ресурса в классе установить свойство компонента? - PullRequest
1 голос
/ 04 февраля 2011

У меня есть звуковой сигнал, который я хочу сыграть всякий раз, когда игрок выполняет определенное действие.У меня все хорошо, и все, но я хочу, чтобы используемый ресурс пришел из файла конфигурации, а не был жестко запрограммирован.

Поэтому я добавил в свой класс свойство MonsterNoiseSoundCue следующим образом:

var config SoundCue MonsterNoiseSoundCue;

Затем в разделе DefaultProperties я добавил следующее к создаваемому мной объекту, который затем добавил в коллекцию компонентов моей пешки.

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' с переменной объекта."Кто-нибудь знает другой способ подойти к этому?

Ответы [ 3 ]

2 голосов
/ 04 февраля 2011

Это «Не разрешается использовать« config »с переменной объекта».сообщение было изменением в UnrealEngine 3.

Я не могу сейчас тестировать, и я являюсь сценарием UT2004, но я бы попробовал это:

var SoundCue MonsterNoiseSoundCue;
var config string MonsterNoiseSoundCueName;

В вашей функции PreBeginPlay (или аналогичной), используйте это, чтобы получить сигнал:

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

Вы должны получить предупреждение в журнале, если звуковой сигнал не существует.

0 голосов
/ 31 января 2015

Потенциальная опция - динамические компоненты. 'Динамически создаваемые компоненты

Чтобы динамически создать экземпляр компонента, используйте новый оператор UnrealScript и вызовите метод 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 
    // .....
}

Чтобы отсоединить и освободить ранее прикрепленный компонент, используйте метод DetachComponent актера.

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

0 голосов
/ 05 апреля 2011

Какую функцию вы используете для воспроизведения звука?

PlaySound создаст аудиокомпонент на лету, поэтому вам не нужно иметь компонент в разделе свойств по умолчанию.* Затем, когда произойдет ваше действие:

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