ゲーム制作ツール RPGツクール全般 【RGSS】Rubyのファイル検査は暗号化アーカイブに対して無効


タグ: 

This topic contains 0件の返信, has 1件の返信, and was last updated by  ろかん Lv.26 3 年 5 ヶ月.

  • RubyはDirクラスやFileTestモジュールを用いることで、指定のファイルが存在しているか等の検査を行うことができます。
    これによりファイルが存在しない場合のみ実行する処理などを実現することができます。

    しかし、例えば暗号化されたゲームのGraphicsフォルダに対して、FileTestモジュールのexist?メソッドを使用しても、正常な結果が得られません。

    テストプレイ時とゲーム公開後で異なる挙動をしめすことになってしまうので注意が必要です。


    どうしてもツクール上でファイル検査を行いたい場合には、とりあえずファイルのロードを試みて、例外が発生するか否かを判断することで対応すると良いです。

    module FileExist
      # 画像の存在判定
      def self.img_exist?(filename)
        begin
          a = Bitmap.new(filename)
        rescue
          return false
        else
          a.dispose
          return true
        end
      end
      # 画像以外の存在判定
      def self.file_exist?(filename)
        begin
          load_data(filename)
        rescue
          return false
        else
          return true
        end
      end
    end
    
    p FileExist.img_exist?("Graphics/System/test.png")

このナレッジに返信するにはログインしてください。