スニペット
AppStoreはこちら → C#からApp Store Connect APIを叩いて売上レポートを取得する 悩んでググってこの記事に辿り着いた方向けの何の補足もない不親切な記事です。 公式のドキュメント using Google.Apis.Auth.OAuth2; using Google.Cloud.Storage.V1; const …
Google Playはこちら → C#からGoogle Play Consoleの売上レポートを取得する 悩んでググってこの記事に辿り着いた方向けの何の補足もない不親切な記事です。 Pkcs8PrivateBlobとかはWindowsでしか動かないので使ってません。 App Store Connect APIのドキュ…
実機上でエラーが発生した時、どうやってデバッグしていますか? AbcConsoleを使っていると、たったこれだけで、 エラーを検知した時(Debug.LogError/LogExceptionが呼ばれた時)に、slackにログを送信できます! slackのtoken取得はこちらのブログなどを参…
EditorPrefsを気軽に使いたいけど、 UnityEditor.EditorPrefsのためだけにdefine書いたり、 そもそもstringしかダメだから一回シリアライズするのも面倒だな・・・って時のために、 EditorPrefsWrapperを作ったのでメモ。 使い方 MessagePack-CSharpに依存し…
Bundle Naming Modeを"Filename"とかにしていれば出力したファイルを見れば良いだけなのですが、 "Use Hash of Filename"等を使っていると、どのファイルがどのAssetか見分けが付かなくなるので、どうにかしました。 var results = new List<(string, long)>…
AddressableでBundle Naming Modeを"Use Hash of Filename"にしている時に生成されるファイル名を算出する方法です。 そのファイル名で実際にアクセス出来ることのテストとして、ファイルサイズの出力をしてみています。 var groupName = assetGroup.Name.Re…
AudioMixerのAudio Mixer Suspendにチェックが入っていると、最初の音の頭がちょっと切れる。 最初から使うならチェックを外す。
ただの備忘録。 定義 public static class AddressableAssets { public static class Bgm { public const string Test1 = "Bgm/TestBgm1"; public const string Test2 = "Bgm/TestBgm2"; public const string Test3 = "Bgm/TestBgm3"; } } 使うところ Addres…
uGUIの"BestFit"とかTextMeshProの"AutoSize"、便利だけど流石にパフォーマンス的にヤバすぎん?って思って調べたら公式も「サイズ調べるために使うためのものでサイズわかったら切ってね」って言ってた> TMP AutoSize performance vs UGUI's BestFit? https…
public class Sandbox1 : MonoBehaviour { public void Start() { var channel = Channel.CreateSingleConsumerUnbounded<ICommand>(); SetupWriter(channel.Writer); SetupReader(channel.Reader).Forget(); } private void SetupWriter(ChannelWriter<ICommand> channelWriter)</icommand></icommand>…
ああ〜このリソース、Sceneの寿命に紐付けたいな〜って時ありますよね。 var disposable = Disposable.Create(() => {}); disposable.AddTo(Lifespan.Scene); これを実現するのが以下のコード。 using System; using UnityEngine; using UniRx; using Object…
async/awaitで、特定条件までawaitしつつも毎フレームこれを実行したい!みたいなめっちゃゲームでしか出てこなさそうなことをどう書くと綺麗に書けるか考えている。 とりあえず素直に書くならこう。 var cancellationTokenSource = new CancellationTokenSo…
Testとかのために同期的にAddressableからAssetを読みたい時用。 public static class EditorAddressables { public static AddressableAssetGroup[] GetGroups() { var settings = UnityEditor.AddressableAssets.AddressableAssetSettingsDefaultObject.Se…
using UnityEngine; using UnityEditor; using UnityEditor.Build; using UnityEditor.Build.Reporting; #if UNITY_IOS using System.IO; using Extension; using UnityEditor.iOS.Xcode; #endif public class IosPostprocessBuild : IPostprocessBuildWithR…
ググるとshift_jisに変換してバイト数数えるやつがよく出てくるんですが、 Unity + Android環境だとI18N.dll突っ込まないと動かないらしいので正確じゃないけどそれっぽい動きするやつ。 正確にやりたい人は頑張ってください。 public static class StringUt…
using System.IO; using AkyuiUnity.Editor.Extensions; using Unity.VectorGraphics.Editor; using UnityEditor; using UnityEngine; namespace Sandbox { public static class SvgToPng { public static byte[] Convert(string svg, Vector2Int size) { va…
var fontAsset = AssetDatabase.LoadAssetAtPath<Font>(fontPath); var settings = new TextGenerationSettings { generationExtents = Vector2.zero, textAnchor = TextAnchor.MiddleCenter, alignByGeometry = false, scaleFactor = 1.0f, color = Color.white, </font>…
using System; using Cysharp.Threading.Tasks; using Extensions; using UnityEngine; public class MessageTest : MonoBehaviour { public void Start() => Test().Forget(); private async UniTask Test() { var messageBroker = new TaskMessageBroker()…
UniRxに入っているAsyncMessageBrokerのTaskバージョン using System; using System.Collections.Generic; using Cysharp.Threading.Tasks; namespace Extensions { public interface ITaskMessagePublisher { UniTask PublishAsync<T>(T message); } public in</t>…
var ct: ComplexType = TPath({ pack: [], name: 'Array', params: [TPType(type.toComplexType())] }); fields.push({ pos: pos, name: "value", access: [APublic], kind: FVar(ct, macro []), meta: [{ name: ":s", pos: pos }] }); ついでに、metaつける…
git ls-remote | grep 'hoge' (ブランチ名の一部)でrefsを得る git ls-remote | grep '556dc1c3db16a13a07bd160fb00c5cdda6d89b83' > a.txt hexdump a.txt git push origin --delete $'\xE5\x88\x9D\xE5\x9B\x9E\xE3\x82\xAF\xE3\x83\xAA\xE3\x82\xA2\xE5'
var fixedTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Japan"); var jstNow = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, fixedTimeZone);