//Create Event //表示する文章 text = ["Hellooooooooooo","Godnightttttttttt"]; //配列にしないと少し面倒なため([]内は一つだけでも大丈夫です) //配列番号(初期値が0だと一つ目の会話がスキップされてしまうため) array_index = -1; //表示可能な文字数 index = 0; //表示速度(フレーム) textSpeed = 5; //文字がすべて表示されたか(初期値が1でないと最初が再生できないため) next = 1;
//Step Event //Enterを押したら再生 if(keyboard_check_pressed(vk_enter)) { if(next == 1){ //表示可能文字を0に設定 index = 0; //文字数が最大でないので0に設定 next = 0; //次の会話へ array_index ++; //アラームイベントをtextSpeedフレーム後に起動 alarm[0] = textSpeed; }else if(next == 0){ //index(文字表示数)にテキストの最大文字数を入れる index = string_length(text[array_index]); //文字数が最大になったので1に設定 next=1 } } if(array_index!=-1){//array_indexが-1の状態でtext[array_index]を参照させるとエラーが起こるため if(index == string_length(text[array_index])){ //文字数が最大になったので1に設定 next = 1; } }
//Alarm[0] Event //表示可能文字数を増やす index++; //表示可能文字数がテキストの文字数未満なら if(index < string_length(text[array_index])) { //再度アラームイベントをtextSpeedフレーム後に起動 alarm[0] = textSpeed; }
//Draw Event if(array_index>=0){//array_indexが-1の状態でtext[array_index]を参照させるとエラーが起こるため //テキストの1番目から表示可能文字数までの数を取得 var str = string_copy(text[array_index],1,index); //それを表示 draw_text(x,y,str); }
回答者様のコードをベースに色々加えました。元々textは配列ではなかったのですが、配列の方がコードをシンプルにしやすいのと会話イベントなので配列にしても問題ないと思い配列にしています。今回の主な変更としてstepイベント内のEnterを押したときの処理を文字数が最大表示であるかどうかで、「indexにstring_length(text[array_index])、つまり会話の最大文字数を入れる」か、「次の会話に行く」になるようにしました。次の会話がない状態で次の会話へ行こうとするとエラーが起こってしまうので、「次の会話がない時、会話を終了する」等の処理を施してください。
不適切なコンテンツとして通報するには以下の「送信」ボタンを押して下さい。 管理チームへ匿名通報が送信されます。あなたが誰であるかを管理チームに特定されることはありません。
どのように不適切か説明したい場合、メッセージをご記入下さい。空白のままでも通報は送信されます。
通報履歴 で、あなたの通報と対応時のメッセージを確認できます。
マニュアル(ver2~2.2.x) マニュアル(ver2.3~) YoYoGames YoYoGames 公式コミュニティ GM関連のYoutubeチャンネル集 解説・資料サイト集(日本語) 解説・資料サイト集(英語)
回答者様のコードをベースに色々加えました。元々textは配列ではなかったのですが、配列の方がコードをシンプルにしやすいのと会話イベントなので配列にしても問題ないと思い配列にしています。今回の主な変更としてstepイベント内のEnterを押したときの処理を文字数が最大表示であるかどうかで、「indexにstring_length(text[array_index])、つまり会話の最大文字数を入れる」か、「次の会話に行く」になるようにしました。次の会話がない状態で次の会話へ行こうとするとエラーが起こってしまうので、「次の会話がない時、会話を終了する」等の処理を施してください。