コメント
このコメントは、【トピック】savePlayData関数の呼び出しでエラーへのコメントです。コメントの内容
コメントの内容(一番最初の投稿)
akasata(投稿日:2013/08/05 22:08/05/13)
お待たせしました。
開発担当のdycoonとも相談したのですが、本件はシステム的な対応は難しいと判断しています。
本件は、理論上は対策が可能なのですが、保存データの基本構造に関わる部分を変更しなくてはならず、バグを作りこんでしまう可能性が低くありません。
その場合、他のゲームの保存データが動かなくなってしまうことになり、リスクを考えると手を下すことができません。
本件のように、arr1 -> arr2 -> arr1 -> arr2 ・・・と無限に続いてしまうデータ構造を循環参照と呼びます。
循環参照には定番ともいえる対策があるので、ぜひ、お試しください。
いただいたコードを元に対策例を紹介します。
お手数をおかけし、大変申し訳ありません。
問題解決の一助になりましたら、幸いです。
開発担当のdycoonとも相談したのですが、本件はシステム的な対応は難しいと判断しています。
本件は、理論上は対策が可能なのですが、保存データの基本構造に関わる部分を変更しなくてはならず、バグを作りこんでしまう可能性が低くありません。
その場合、他のゲームの保存データが動かなくなってしまうことになり、リスクを考えると手を下すことができません。
本件のように、arr1 -> arr2 -> arr1 -> arr2 ・・・と無限に続いてしまうデータ構造を循環参照と呼びます。
循環参照には定番ともいえる対策があるので、ぜひ、お試しください。
いただいたコードを元に対策例を紹介します。
arr1 = createArray() arr2 = createArray() arr1[0] = "cake" # 配列への参照ではなく、ラベルを登録します # ここでは、ラベルには命名規則として接尾語に"_label"をつけます arr1[1] = "arr2_label" arr2[0] = "icecream" # 配列への参照ではなく、ラベルを登録します arr2[1] = "arr1_label" setVariable("arr1", arr1) setVariable("arr2", arr2) # ラベルから配列を取得する関数です def get_arr_from_label(label) # 接尾語の取得 arr = splitString(label, "_") suffix = popArray(arr) # 接尾語がlabelの場合 if suffix == "label" s = joinArray(arr, "_") return getVariable(s) else speak("末尾がlabelじゃないのでエラーです") end end # 実際に使うとき # arr2_from_arr1とarr2は同じ内容 arr1 = getVariable("arr1") arr2_from_arr1 = get_arr_from_label(arr1[1]) # arr1とarr1_from_arr2は同じ内容 arr2 = getVariable("arr2") arr1_from_arr2 = get_arr_from_label(arr2[1]) # ちゃんと値が入っているかどうかチェック # 配列を表示するのは面倒なので、joinArrayで文字列に変換してしまいます speak("arr1: " + joinArray(arr1, ", ")) speak("arr2_from_arr1: " + joinArray(arr2_from_arr1, ", ")) speak("arr2: " + joinArray(arr2, ", ")) speak("arr1_from_arr2: " + joinArray(arr1_from_arr2, ", ")) # もちろん、実際に保存してエラーが出ないかチェックしてください
お手数をおかけし、大変申し訳ありません。
問題解決の一助になりましたら、幸いです。
開発担当のdycoonとも相談したのですが、本件はシステム的な対応は難しいと判断しています。
本件は、理論上は対策が可能なのですが、保存データの基本構造に関わる部分を変更しなくてはならず、バグを作りこんでしまう可能性が低くありません。
その場合、他のゲームの保存データが動かなくなってしまうことになり、リスクを考えると手を下すことができません。
本件のように、arr1 -> arr2 -> arr1 -> arr2 ・・・と無限に続いてしまうデータ構造を循環参照と呼びます。
循環参照には定番ともいえる対策があるので、ぜひ、お試しください。
いただいたコードを元に対策例を紹介します。
お手数をおかけし、大変申し訳ありません。
問題解決の一助になりましたら、幸いです。