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
を使う方が良さそう