// вставить в диалог портрет персонажа через ф-ии Фунгуса private Sprite ShowSpeakerFace(Person Pers, bool show) { Character currentCharacter; if ((currentCharacter = GetChar(Pers)) == null) { return(null); } Sprite currentPortrait; if ((currentPortrait = FindFaceByNumber(currentCharacter, Pers.Portrait)) == null) { return(null); } Debug.Log("Pers is " + Pers + " show " + show); // перс почему-то два раза подряд вызывается, к тому же отмена накладывается на след. показ var stage = Stage.GetActiveStage(); var portraitOptions = new PortraitOptions(true); portraitOptions.character = currentCharacter; portraitOptions.portrait = currentPortrait; portraitOptions.display = show ? DisplayType.Show : DisplayType.Hide; string Position = show ? "Left" : "OffscreenLeft"; portraitOptions.toPosition = stage.GetPosition(Position); portraitOptions.waitUntilFinished = true; portraitOptions.fadeDuration = 0f; if (show && !SpeakingCharLeft) { if (stage.CharactersOnStage.Contains(currentCharacter) == false) { stage.Show(portraitOptions); } SpeakingCharLeft = true; } else if (!show && SpeakingCharLeft) { stage.Hide(portraitOptions); SpeakingCharLeft = false; } return(currentPortrait); }
public override void OnEnter() { // Selected "use default Portrait Stage" if (stage == null) { // If no default specified, try to get any portrait stage in the scene stage = FindObjectOfType <Stage>(); // If portrait stage does not exist, do nothing if (stage == null) { Continue(); return; } } // If no display specified, do nothing if (IsDisplayNone(display)) { Continue(); return; } PortraitOptions options = new PortraitOptions(); options.character = character; options.replacedCharacter = replacedCharacter; options.portrait = portrait; options.display = display; options.offset = offset; options.fromPosition = fromPosition; options.toPosition = toPosition; options.facing = facing; options.useDefaultSettings = useDefaultSettings; options.fadeDuration = fadeDuration; options.moveDuration = moveDuration; options.shiftOffset = shiftOffset; options.move = move; options.shiftIntoPlace = shiftIntoPlace; options.waitUntilFinished = waitUntilFinished; stage.RunPortraitCommand(options, Continue); }