カラスの目はよく見るとかわいい

技術系ブログ。Unity、GoogleAppsScript、C#、VisualStudioCodeを中心に投稿しています。

【Python】Anacondaで実行するバッチの例

ファイル:test.bat

echo on

cd C:\Users\username\Documents\test\
call C:\Users\username\anaconda3\Scripts\activate.bat
call activate Envname
title title_name
python test.py

pause

usernameをあなたのユーザー名に変更。実行したいpythonファイルのフォルダ。
usernameをあなたのユーザー名に変更
Envnameをanacondaで作ったEnvironment名に変更
実行したいpythonファイル名に変更

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を使って入力支援を実装する

f:id:Rokkotsu:20210612113507g:plain
custom editor unity
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も要りません。

  1. やる前に壁などを触って静電気を放出しておく。
  2. CPU挿れるとこのフタを開けて、CPUを挿し、フタを閉じる。閉じるとカバーが勝手に外れる。
  3. CPUクーラーを取り付ける。ただ四箇所貫通させるだけ。よく"グリスを塗る"と聞くが、クーラーに既に塗られている。
  4. CPUクーラーに電源供給するプラグを挿す。線がプロペラに絡まないようにする。
  5. メモリを挿す
  6. 電源からマザーボードに配線する。2箇所ある。
  7. 電源スイッチをPWと書かれているところに挿す。白がマイナスで、色付きがプラス。

この状態で電源スイッチを押すと起動する。
しない場合は何かがちゃんと刺さっていないか、電源が-になっていない。あるいは壊れている。

  1. グラボをPCIExpressに挿し、電源から配線する。直挿ししたくない場合は、ライザーケーブルというものを買っておく。1xから16xのものとか、16xから16xのものとかある。
  2. HDMIケーブルをグラボに挿し、LANケーブルを挿し、USBメモリを挿す。

USBメモリからブースト

  1. PCの電源を入れたら、Delキーを連打してBiosを立ち上げる。
  2. boot option priorityをUSBメモリのものに変更する(GigabyteだとBootのとこ)。パーティションと書いてないものを選ぶ。パーティション3と書いてあるものにすると、NiceHashOSがout of memoryとなるかも。パーティション2は動いたんだけれど、よくわからない。
  3. 保存して再起動すると完成

connectedはインターネットが関係している状態表示
Radeon6700XTで試したらMinerがNoになったりYesになったりしてたけど、マイニングはされていないっぽい。
現在(2021/03/31)Radeon6000シリーズはNiceHashOSでは対応していない。Windows上で動くNiceHashMinerは6000シリーズも対応している。