设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 7093|回复: 8
打印 上一主题 下一主题

[交流讨论] 地图画面显示变量和文字的窗口怎么实现

[复制链接]

Lv2.观梦者

梦石
0
星屑
784
在线时间
109 小时
注册时间
2008-2-10
帖子
254
跳转到指定楼层
1
发表于 2018-8-9 08:41:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
如题,我想让窗口显示在地图画面的有上角,实现日期时间的实时显示
h

Lv1.梦旅人

梦石
0
星屑
176
在线时间
15 小时
注册时间
2018-7-15
帖子
32
2
发表于 2018-8-9 11:29:36 | 只看该作者
https://rpg.blue/thread-386506-1-1.html
我还是个新手,只清楚怎么显示一个窗口
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
29590
在线时间
605 小时
注册时间
2014-7-18
帖子
729

开拓者

3
发表于 2018-8-9 19:13:09 | 只看该作者
不谦虚地推荐一下自己的教程:(后面的坑还没有填完,但是显示个时间还是可以的吧)
https://rpg.blue/forum.php?mod=viewthread&tid=394695
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
784
在线时间
109 小时
注册时间
2008-2-10
帖子
254
4
 楼主| 发表于 2018-8-9 20:50:46 | 只看该作者
谢谢各位,问题 是怎么调用显示变量啊
h
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
408
在线时间
45 小时
注册时间
2018-2-11
帖子
4
5
发表于 2019-6-8 17:43:32 | 只看该作者
我也想知道怎么在地图上显示变量值
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3544
在线时间
1165 小时
注册时间
2016-8-9
帖子
2392

开拓者

6
发表于 2019-6-8 21:24:12 | 只看该作者
本帖最后由 白嫩白嫩的 于 2019-6-8 21:30 编辑
dfdljdj 发表于 2019-6-8 17:43
我也想知道怎么在地图上显示变量值


善用搜索

地图显示变量


另一个地图显示变量在三楼


获取本地时间
酸酸甜甜就④哇噢
回复 支持 1 反对 0

使用道具 举报

Lv2.观梦者

梦石
0
星屑
408
在线时间
45 小时
注册时间
2018-2-11
帖子
4
7
发表于 2019-7-3 08:57:44 | 只看该作者
您的解答帮了我的大忙了,谢谢大佬!
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22107
在线时间
8580 小时
注册时间
2011-12-31
帖子
3362
8
发表于 2019-7-4 19:08:02 | 只看该作者
本帖最后由 tseyik 于 2019-7-5 11:21 编辑

http://ktnhmv.jugem.jp/?eid=21
2016.03.19 Saturday
マップ上に常に情報ウィンドウを表示する
文章中的附件己失
InfoWindow.zip (1005 Bytes, 下载次数: 195)

■補足説明

13~33行目

    // マップ上に表示する宣言/地圖上顯示的宣言
    var Scene_map_start = Scene_Map.prototype.start;
    Scene_Map.prototype.start = function() {
        Scene_map_start.call(this);
        this._InfoWindow = new Window_Info();
        this.addWindow(this._InfoWindow);
    };

    // ウィンドウ内の情報を更新するタイミングを宣言/何時更新窗口中的信息宣言
    var _Scene_Map_update = Scene_Map.prototype.update;
    Scene_Map.prototype.update = function() {
        _Scene_Map_update.call(this);
        this._InfoWindow.setText();
    };

    // ウィンドウを定義/定義窗口
    function Window_Info() {
        this.initialize.apply(this, arguments);
    }
    Window_Info.prototype = Object.create(Window_Base.prototype);
    Window_Info.prototype.constructor = Window_Info;

この部分は全く変更する必要はありません。
上のJavascriptさんの返事でいうと(1)~(3)の部分にあたります。
たとえば「addWindow」という語がありますよね。addは追加、Windowはそのままウィンドウ、なので「Scene_Map」「start」「addWindow」という三つの語を拾い出せば、「マップが開始されたらウィンドウを画面上に追加する」という様な意味合いになる事は分かると思います。
ちなみに赤字の_Infoは全て共通にすれば変更しても問題無いです。Window_Otakaraとかでも構いません。
以上部分沒有必要改變。
它對應於上述Javascript答案中的(1)至(3)部分。
例如,有“addWindow”這個詞。 add是添加,Window是一個窗口,
所以如果你選擇三個單詞“Scene_Map”,“start”和“addWindow”,
這意味著“我將在地圖啟動時在屏幕上添加一個窗口”的意義 相信很清楚了。

36~42行目

    Window_Info.prototype.initialize = function() {
        var x = 20;
        var y = 20;
        var width = 180;
        var height = 108;
        Window_Base.prototype.initialize.call(this, x, y, width, height);
    };


ここで、情報ウィンドウの位置調整と、大きさ調整です。
var x = 20、var y = 20は、「画面上のx座標20、y座標20の位置にウィンドウを表示するよ」という意味です。単位はピクセルです。つまり、こういう事ですね。
這是信息窗口的位置調整和大小調整。
“var x = 20,var y = 20”表示“在x坐標20的位置顯示窗口,在屏幕上顯示y坐標20”。 單位是像素。
“width = 180;var height = 108“;窗口180×108



通過拍攝遊戲畫面的屏幕截圖,將其粘貼到繪圖軟件上,
然後實際繪製想要創建的窗口,可以輕鬆計算出所需的位置,寬度和高度。
然後它飛了一點,49-56線。
最後,我們將研究如何製作信息窗口的內容。

    Window_Info.prototype.refresh = function() {
        this.contents.clear();
        this.changeTextColor(this.textColor(16));
        this.drawIcon(210, 1, 1);
        this.drawText("拾った宝箱",40, 1);
        this.resetTextColor();
        this.drawText($gameVariables.value(2) + " 個",0,this.lineHeight());
    };




首先,
this.contents.clear();
最初にこれ書かないと、更新前の文字が残ったままになります。カウントアップさせる場合だと「1」の字の上に「2」が重なったりして、ものすごい事になります。
如果您不先寫入此內容,則會保留更新前的字符。 在在那情況下,“2”會疊加在“1”字符上,這將是大問題

this.changeTextColor(this.textColor(16));
這意味著將文本從下一個更改為第16個顏色(淺藍色)。
如果默認顏色沒問題,可以不需要此行。
t順便說一下,顏色值是項目文件夾中img / system / Window.png的右下方顏色組。
例如,如果你想要橙色,his.textColor(2)です。

this.drawIcon(210, 1, 1);
アイコンを表示させます。210番のアイコンをx座標1、y座標1の位置に表示させよという意味です。
上の例では宝箱のアイコンを表示させていますが、宝箱アイコンはアイコン群のID210番です。
イベント「文章の表示」で、入力ウィンドウ内を右クリックするとアイコンビューアが出せますが、そこでアイコンを選択した時にIDが下に表示されると思います。その数値です。

this.drawText("拾った宝箱",40, 1);
「拾った宝箱」というテキストをx座標40、y座標1の位置に表示させよという意味です。
なぜ40かと言うと、すぐ手前で表示させたアイコン分の幅と少しの余白分を入れたものです。
これを1にすると宝箱アイコンと位置がかぶってしまいますからね。
アイコンの幅を変数で自動取得するという事も可能ですが、手動で数値を入れて色々いじってもらった方が感覚がつかみやすいと思いましたので、カットします。

this.resetTextColor();
16番の色で表示させていた配色を、デフォルトの色に戻す時に使います。これを入れればウィンドウの途中で変えていた色を元に戻せます。たとえば3行のテキストで、1行ごとに色が変わる場合は、this.resetTextColor()を2回書かなくてはいけません。

this.drawText($gameVariables.value(2) + " 個",0,this.lineHeight());
再び、drawTextが出て来ましたね。
これが今回の情報ウィンドウの肝です。
最初のdrawTextが1行目であれば、次のdrawTextは2行目。
2行目に $gameVariables.value(2)+「個」という文字列を、x座標0、y座標は1行分空けた位置に表示させよという意味です。

$gameVariables.value(2)は変数ID2番の値を取得するためのものです。
変数ID2には最初で説明しました、「宝箱の取得数」が格納されています。
宝箱の数値が入り、そのあとに「個」という文字が入る。
こうする事で1個とった時は「1個」と画面上に表示されるわけですね。

ちなみにこの$gameVariables.value(ID)の部分、
たとえば画面上に総プレイ時間を表示させたい場合は
$gameSystem.playtimeText()
と書きます。

03.gif (101.74 KB, 下载次数: 17)

03.gif

点评

还是tseyik 大佬带来的插件给力,这个感觉很有特色  发表于 2019-7-4 19:59

评分

参与人数 1+1 收起 理由
白嫩白嫩的 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-30 22:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表