Uipathを使ってymm4の台詞入力の自動化をした
タイトルの通り、Uipathでゆっくりムービーメーカー4の
台詞入力の自動化をしてみました。
制作の経緯はまぁ…自分が面倒だったからです。
最近TRPGのリプレイ動画作りにはまってましてそのたびに
台詞入力しては追加してシークをクリックしてが…とても面倒で…
メモ帳みたいなのに台詞入れたら後はだーっと入力してくれないかな
と思い、勉強しつつ少しずつ作ってみました。
動くところまではできていて、
この画像も作ったものを使って自動で入力させてます。
キャラ名に関してはキャラ名を判定するように
1つ別にテキストを作ってます。
ゆっくりムービーメーカー4から名前を
取得することは出来なかったので
上から何番目にあるかで番号を振って、
それと名前を連携させて動かしています。
現状の機能
ダイス音の入力、ダイスの結果入力、
背景とBGMの入力、間を作る、表情入力
ができるようになっています。
表情に関しては設定があるので
めちゃ楽かと言われると微妙です…
テキストの横に表情が上から何番目にあるか数えて
¥番号と書いたら入力されます。
気が向いたら成果動画を作ろうかなと考えてます。
一般配布予定はありません
現状で一般配布予定はありませんが
一応知り合いにテストで使ってもらったりはしています。
一般配布をしない理由
- 理由その1
まずエラーの例外処理などを私が組んでいないため
エラーを起こすと止まってしまったりします。
またバグも多めです。
- 理由その2
単純にUipathのロボットの配布方法がわからないというのもあります。
現状テストしてもらってる方もUipathのプロジェクトファイルを
そのまま渡してデバックで動かしてもらってるので…
誰かテストで使いたいという方がいれば声をかけていただけたら考えますが
趣味で制作しているものなので急かしたりする方以外でお願いします。
使用したコードや処理について
HTML、CSSぐらいしか触ったことがなく
プログラムほとんどやったことないため
色々おかしいかもしれないですが実際使用したコードなど
備忘録に描いておきます。
最初は台詞の自動入力だけを作り始めました。
uipathだとファイルの読み込みはアクティビティにあるので
ファイルの選択を使えば簡単に読み込めます。
メモ帳のまま読み込んで入力させると、
全部のテキストを入力されてしまうので
Uipathに入力できる形に整形してもらいます。
それに当たって必要な処理は1行ごとに配列に格納してもらうことです。
・文字を改行ごとに配列へ格納
-
配列String型変数=String型変数.Split(CChar(vbCrLf))
このコードを使いました。
改行で区切って配列に格納してくれます。
splitを使うと色々分割できます。
その後、格納したデータの数を取得して
その回数分処理を繰り返しさせました。
私はフロー条件分岐を使ってそこに条件式を入れています。
・格納したデータ数の取得
-
int型変数=配列String型変数.Count
これでデータ数の取得が出来ます。
0からカウントされるので0から数えてください。
キャラ名のテキストに関しても同じ処理を使って分割しました。
これで1行ごとのデータが出来たので
台詞部分のみを抽出します。
・:より前を削除して台詞のみを抽出する。
-
String型変数=:以降を取得したいString型変数.Remove(0,:以降を取得したいString型変数.IndexOf(“:”)+1)
(0,:以降を取得したいString型変数.IndexOf(“:”))というのは
0から:の位置まで消しますよという意味になると思います。
ただこれだと:が残ってしまったので+1して:までを消すようにしています。
名前に関しては:でsplitをして、分割して、
キャラ番号とキャラ名に分けてます。
キャラ名を使って台詞のテキストに名前が入っているか
どうか判定させました。
・特定の文字が含まれてるかどうかの判定
-
判定したいString型変数.contains(“判定したい文字”)
こちらのコードを条件式に入れるとTrueとfalse判定してくれます。
変数に入れたい場合は多分boolean型に入れたら良いと思います。
ここまでしたら後は入力させるだけです。
基本はUipathのレコーディング機能を使って処理を入力していきます。
その後、必要な部分だけコードを書き換えて
入力する部分に変数を入れたりするだけです。
追加機能を実装するにあたって色々やりましたが
その辺りはまた気が向いたら書きます。
コメント