ラベル 保存 の投稿を表示しています。 すべての投稿を表示
ラベル 保存 の投稿を表示しています。 すべての投稿を表示

2023年10月18日水曜日

Unity Colorをシリアライズする

UniyでimageのColorクラスを保存しようとしたら以下のエラーが表示されました。

>SerializationException: Type 'UnityEngine.Color' in Assembly 'UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.

解決方法

Colorを文字型に相互変換して保存する

 public static Color ToColor(string str)

    {//文字型をカラーに変換

Color color;

if (ColorUtility.TryParseHtmlString(str, out color))

{

//変換成功

}

else

{

//変換失敗

color = Color.clear;

}


return color;


}

public static string ToStringColor(Color color)

    {

string strcolor = ColorUtility.ToHtmlStringRGB(color);


return strcolor;

}

2015年9月13日日曜日

unity PCのローカルへファイルを保存するサンプル

pcのローカルへファイルを保存するサンプルです。
assetsフォルダと同じディレクトリにassets2フォルダをあらかじめ用意ししてください。

以下使用例

            FileSaveText ("/../assets2/pass.csv",datas);
            EditorUtility.DisplayDialog("Information""SYUURYOU !!! TEXT""OK");


//テキストデータの保存
    public void FileSaveText(string fileName,String fileData){
        StreamWriter sw;
        FileInfo fi;
        fi = new FileInfo(Application.dataPath + fileName);
        sw = fi.AppendText();
        sw.WriteLine(fileData);
        sw.Flush();
        sw.Close();
    }

//バイトデータの保存    public void FileSaveGazo(string fileName,Byte[] fileData){

        string path = string.Format("{0}/{1}"Application.dataPath , fileName);
        File.WriteAllBytes(pathfileData);

    }

2013年8月5日月曜日

シリアライズ保存 サンプルソース


シリアライズしたデータの保存読み取りサンプル
型引数を使えばより柔軟な保存処理になります。、

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import android.content.Context;
import android.util.Log;

//配列はすでにSerializableをインプリメントしています。
public class SaveLoad {
private String TAG = "aa";
private Context cn;

SaveLoad(Context context) {
cn = context;
}

public void set(String fileName,int[] data) {
try {
FileOutputStream fos = cn.openFileOutput(fileName,
cn.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(data);
oos.close();
} catch (Exception e) {
Log.d(TAG, "setError");
}
}

public int[] get(String fileName) {
try {
FileInputStream fis = cn.openFileInput(fileName);
ObjectInputStream ois = new ObjectInputStream(fis);
int[] data = (int[]) ois.readObject();
ois.close();
return data;
} catch (Exception e) {
Log.d(TAG, "getError");
}
return null;
}

}

2013年7月7日日曜日

JAVAのプリミティブ型の配列はシリアライズ可能

JAVAの基本型(プリミティブ、intやcharなど小文字で始まる変数の型)は配列にすることでラッパ型になり、シリアライズがインプリメントをされます

パーミッションは不要です。

以下、シリアライズ保存の例

public void set(String fileName,int[] data) {
try {
FileOutputStream fos = cn.openFileOutput(fileName,
cn.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(data);
oos.close();
} catch (Exception e) {
Log.d(TAG, "setError");
}
}

public int[] get(String fileName) {
try {
FileInputStream fis = cn.openFileInput(fileName);
ObjectInputStream ois = new ObjectInputStream(fis);
int[] data = (int[]) ois.readObject();
ois.close();
return data;
} catch (Exception e) {
Log.d(TAG, "getError");
}
return null;
}


以下のようなプリファレンスだけでは配列を保存できません。その場合は上記を使用できます。

   private void save()
   {
//プリファレンスに保存
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
Editor e = sp.edit();
e.putBoolean("Boolean1", true);
e.commit();
   }
   private void load(){
   SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
    sp.getBoolean("Boolean1", false));

   }

2012年9月8日土曜日

プリファレンス 簡易保存サンプル


文字列をプリファレンス 保存

プリファレンス機能を使う事で簡易情報記録ができます。
ちょっとした管理情報を記録するには便利ですが。
この情報はアプリを更新すると消えてしまうので注意が必要です。



数値をキーにして文字列の保存と読み取り

・読み取り
private String getPreStr(int inInt){
  String str="";
  try{
  SharedPreferences pref =
  getSharedPreferences("識別",MODE_PRIVATE);
  str = pref.getString(String.valueOf(inInt), "");//引数INTの番号をKEYにして読み取り なければ空文字

  }catch (Exception e){
   e.printStackTrace();
    Log.e("getPreStr","Null");
  }
   
return str;
 
 }
・書き込み
 private void setPreStr(int inInt ,String inStr){
  try{
  SharedPreferences pref =
  getSharedPreferences("識別",MODE_PRIVATE);
  Editor e = pref.edit();
  e.putString(String.valueOf(inInt), inStr);//引数INTの番号をKEYにして書き込み
  e.commit();
  }catch (Exception e) {
// TODO: handle exception
  e.printStackTrace();
  Log.e("setPreStr","null");
}
 
 }