UnityのButtonのonClickに引数がないせいで困ったときの解決策
UnityでButtonが複数あると、押されたときにどのボタンが押されたかわからない。
そういうときはラムダを使うと解決できる。
for(int i = 0; i < m_Buttons.Length; i++)
{
int index = i;
m_Buttons[i].onClick.AddListener(() =>
{
Debug.Log("押されたボタンのインデックス:"+index);
});
}
ただし、iを直接ラムダの中に入れると、
どのボタンが押されてもiの最後の状態になるので注意。
m_Buttons.Lengthが5だった場合、
iはforループの最後に5になるので、その値が出力される。
ユーザデータをStreamingAssetsフォルダにjsonファイルとして保存するサンプル
Directoryはエラーになると思うので、ダブルクリックして右クリック-クイックアクションでusingを追加してください。
public static class FileManagerSample
{
private const string UserDataFilePath = "user_data.json";
[System.Serializable]
public class User_Data
{
public int highScore = 0;
}
public static User_Data LoadUserData()
{
if (Directory.Exists(Application.streamingAssetsPath) == false)
{
Directory.CreateDirectory(Application.streamingAssetsPath);
}
string fullpath = Path.Combine(Application.streamingAssetsPath, UserDataFilePath);
if (File.Exists(fullpath) == false)
{
return new User_Data();
}
string json = File.ReadAllText(fullpath);
if (string.IsNullOrEmpty(json))
{
return new User_Data();
}
User_Data data = JsonUtility.FromJson<User_Data>(json);
return data;
}
public static void SaveUserData(User_Data data)
{
string fullpath = Path.Combine(Application.streamingAssetsPath, UserDataFilePath);
string json = JsonUtility.ToJson(data);
File.WriteAllText(fullpath, json);
}
}
エディタ拡張の例 入力支援を実装する
UnityのCustomEditorを使って入力支援を実装する

using System.Collections.Generic;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
public class Test : MonoBehaviour
{
public string fruit = "test";
[HideInInspector]
public int editorSelectedIndex;
[HideInInspector]
public string[] dropdownItems = new string[] { "Apple", "Orange", "Banana" };
}
#if UNITY_EDITOR
[CustomEditor(typeof(Test))]
public class LocalizeTextEditor : Editor
{
private Test test;
private void OnEnable()
{
this.test = target as Test;
}
public override void OnInspectorGUI()
{
serializedObject.Update();
DrawDefaultInspector();
EditorGUI.BeginChangeCheck();
var selectedIndex = this.test.editorSelectedIndex;
List<string> list = new List<string>();
//ここを変更すればテキストファイルから取ってきたりできる
list.AddRange(this.test.dropdownItems);
var displayOptions = list.ToArray();
var index = displayOptions.Length > 0 ? EditorGUILayout.Popup("入力支援", selectedIndex, displayOptions)
: -1;
if (EditorGUI.EndChangeCheck())
{
var objectToUndo = this.test;
var name = "Foo";
Undo.RecordObject(objectToUndo, name);
this.test.editorSelectedIndex = index;
this.test.fruit = list[index];
}
serializedObject.ApplyModifiedProperties();
}
}
#endif
自作PCとNiceHashをUSBメモリからブートしてマイニングするメモ
Nicehashのアカウントを取るのとか、いくつか省いている工程があります。
USBメモリにFlashする
NiceHashのサイトのダッシュボードを開く。
miningからDownload Miner or Add Asicクリック。NiceHashOSを選んでDownload For ほにゃららを選ぶ。
このほにゃららは、今あなたが使っているOSのことなので注意。
USBメモリにFlashする作業をやるOSを選ぶ、ということ。
あとはダウンロードしたファイルをダブルクリックして、言われたようにしていって、アドレスを入力したりするだけ。
PC組み立て
最小構成(ケースなし)
・マザーボード
・電源。1200W
・CPU。celeron
・メモリ。8GB
・USBメモリ16GB。
・電源スイッチ、マザーボード用。
これだけで5万円位
その他
・グラフィックボード
・LANケーブル
・HDMIケーブル
・モニタ
・キーボード
SSDやHDDは不要。ケースなしなので電源スイッチが要りますが、マザーボードに電源スイッチが付いているものであれば要りません。
Windowsも要りません。
- やる前に壁などを触って静電気を放出しておく。
- CPU挿れるとこのフタを開けて、CPUを挿し、フタを閉じる。閉じるとカバーが勝手に外れる。
- CPUクーラーを取り付ける。ただ四箇所貫通させるだけ。よく"グリスを塗る"と聞くが、クーラーに既に塗られている。
- CPUクーラーに電源供給するプラグを挿す。線がプロペラに絡まないようにする。
- メモリを挿す
- 電源からマザーボードに配線する。2箇所ある。
- 電源スイッチをPWと書かれているところに挿す。白がマイナスで、色付きがプラス。
この状態で電源スイッチを押すと起動する。
しない場合は何かがちゃんと刺さっていないか、電源が-になっていない。あるいは壊れている。
USBメモリからブースト
- PCの電源を入れたら、Delキーを連打してBiosを立ち上げる。
- boot option priorityをUSBメモリのものに変更する(GigabyteだとBootのとこ)。パーティションと書いてないものを選ぶ。パーティション3と書いてあるものにすると、NiceHashOSがout of memoryとなるかも。パーティション2は動いたんだけれど、よくわからない。
- 保存して再起動すると完成
connectedはインターネットが関係している状態表示
Radeon6700XTで試したらMinerがNoになったりYesになったりしてたけど、マイニングはされていないっぽい。
現在(2021/03/31)Radeon6000シリーズはNiceHashOSでは対応していない。Windows上で動くNiceHashMinerは6000シリーズも対応している。
RectTransformのサイズを取得するときにsizeDeltaは使わない方がいいかもしれない
RectTransformのsizeDeltaは、ストレッチモードの時に0が返って来るので、
GetComponent
を使う方が良さそう