びぼうろくってみんなやってる

みんなやってるからぼくもやる

そのうち役立ちそうなことメモっときたい。

  • 処理負荷調べたいとき。
    • Profilerの下半分、Hierarchyで見られるようにする。
using UnityEngine.Profiling;

public class TestClass
{
  public void Test(){
    Profiler.BeginSample("処理負荷測定したい");
    /*ここの負荷を測り、Profilerに表示*/
    Profiler.EndSample();
  }
}
  • interfaceの明示的な実装
    • interface経由でのみメンバーの呼び出しが可能になる。
public interface ITestClass
{
    int Number { get; }
    int INumber { get; set; }


    void Test();
    void ITest();
}

public class TestClass : ITestClass
{
    public int Number { get; private set; }
    int ITestClass.INumber { get; set; }

    public void Test(){}
    void ITestClass.ITest(){}
}
public class UseClass
{
    ITestClass iTestClass = new TestClass();
    TestClass testClass = new TestClass();

    void Execute()
    {
        int iTestNum = iTestClass.Number;
        int iTestINum = iTestClass.INumber;

        int testNum = testClass.Number;
        //int testINum = testClass.INumber; // 実体からは呼ぶことが出来ない

        iTestClass.Test();
        iTestClass.ITest();

        testClass.Test();
        //testClass.ITest(); //実体からは呼ぶことが出来ない

    }
}
  • NSubstitute
    • https://github.com/nsubstitute/NSubstitute/downloads
    • (解凍フォルダ)\lib\NET35\NSubstitute.dll
      • Unityの.NETのバージョンによってはNET40の方で
    • これををunityの"Assets/Plugins"以下へコピー
    • エディタで NSubstitute.dll を選択し、ExcludePlatformsのEditor以外のチェックをONにしておく
    • 便利。
using NSubstitute;

public class NSubstituteTest
{

    public ITestModel CreateMockModel()
    {
        var model = Substitute.For<ITestModel>();
        model.Name.Returns("たかし");
        model.Number.Returns(0);

        model.GetJobId(0).Returns(0);

        return model;
    }

}

public interface ITestModel
{
    string Name { get; }
    int Number { get; }

    int GetJobId(int id);
}

public class TestModel : ITestModel
{
    public string Name { get; private set; }
    public int Number { get; private set; }

    public int GetJobId(int id)
    {
        return 0;
    }
}