ジョーカースクリプトでバックログを表示(@showlog)して
閉じても、LogContents(Clone)が生成されたままで再度バックログを表示すると
LogContens(Clone)が増殖してどんどん処理が重くなる。

Logを閉じるときにはLogContens(Clone)を削除するように変更した。

★CanvasLog.cs
using UnityEngine;
using System.Collections;
using Novel;

public class CanvasLog : MonoBehaviour {

// Use this for initialization
void Start () {
}

//ログを閉じる
public void closeLog(){

//イベントを停止する
StatusManager.enableEventClick = true;
NovelSingleton.GameManager.nextOrder ();

GameObject back = GameObject.Find ("CanvasLog") as GameObject;
back.GetComponent<Canvas> ().enabled = false;

        GameObject content = GameObject.Find("CanvasLog/ScrollView/Content");
        foreach (Transform n in content.transform)
        {
            GameObject.Destroy(n.gameObject);
        }


        //テキストにバックログを表示する
        //nextOrderする?

    }
// Update is called once per frame
void Update () {
}
}

Luaのテーブルはオブジェクト。
そのため、テーブルのコピーは結果として、参照先がコピーされる。
なので、下記のような現象が起きる。へー。っていう感じ。

local TableTestA ={}
local TableTestB ={}
TableTestA["a"]=10
print("TableTestA[a]:"..TableTestA["a"])  → TableTestA[a]:10 と表示される。
TableTestB=TableTestA            ← テーブルをコピー(参照先がコピーされる)
print("TableTestB[a]:"..TableTestB["a"])  → TableTestB[a]:10 と表示される。
TableTestB["a"]=20               ← Bの方で値を20に変更作業をする。
print("TableTestA[a]:"..TableTestA["a"])  → TableTestA[a]:20 と表示される。←これも変更される。
print("TableTestB[a]:"..TableTestB["a"])  → TableTestB[a]:20 と表示される。←これは当たり前
TableTestA = nil
print("TableTestB[a]:"..TableTestB["a"])  → TableTestB[a]:20 と表示される。

ランキング機能の作成のために、WEB側(PHP)で管理用のコードを記載しているが
新規IDの発行が上手く行かない…。ダミーでID最大値12ぐらいまで作っても、MAXで返ってくる値が9とオカシイ。よくよく調べてみると、IDがテキスト型になっていたからダメで、int型と明示してやればMAX関数が使えた。

//-------------------------------------------------
//  ランキング管理用IDを生成
//-------------------------------------------------
function func_makeID($Settei){

//データベース存在確認
$ext = file_exists($Settei['db_name']);

//今日の日付を取得(2038年問題対応版)
$today = new DateTime(); //本日
$db_today = $today->format('Y-m-d H:i:s');

//データベースを開く
$db = new SQLite3($Settei['db_name']); //SQLite3の構文

if (!$ext){
//データベースが無ければ TABLE作成
//※テーブル名:highscore
//※データ内容:ID,名前,スコア,更新日,作成日
$query = "CREATE TABLE highscore (db_playid int, db_playname , db_score , db_updatedate , db_createdate)";
$db->query($query);
//ダミーデータの登録
$query = "INSERT INTO highscore VALUES(1,'dummy',0,'$db_today','$db_today')";
$db->query($query);
}

//データベースが在れば現在のID最大値を調べる
$query = "SELECT MAX(db_playid) FROM highscore"; //idの最大値を取得する
$results = $db->query($query); //データベースからデータを引っ張ってくる
$arr = $results->fetchArray(SQLITE3_ASSOC);
$maxno = $arr["MAX(db_playid)"];

//新規IDの発行
$newplayid = $maxno + 1;
$query = "INSERT INTO highscore VALUES($newplayid,'NoName',0,'$db_today','$db_today')";
$db->query($query);

print("NewPlayID:".$newplayid);

$db->close(); //データベースの切断 SQLite3

↑このページのトップヘ