TAKOYAKING’s blog 一覧

TAKOYAKING’s blog

たこ焼き系

Unity: Unity 2D Animationでシーンでボーン(骨)の表示・非表示

Unity 2D AnimationでAnimationを作っていた時に、なぜかボーン(骨)が表示されないことがあって、焦りました。

f:id:TAKOYAKING:20200414001039p:plain

あれ?さっきまで骨があったはずなのになくなって結構焦りました。

https://forum.unity.com/threads/2d-sprite-editor-bones-arent-visible-in-scene.681337/
ここにGizmosをOnにすれば表示されると書いてありました。

上の方にあるGizmosをOnにすると表示されました。
f:id:TAKOYAKING:20200414001216p:plain

そういえば昨日Gizmosを切り替えて遊んでいたのを忘れていました!

Unity:オブジェクトのパスが変わった時にアニメーションのパスを一括変更する

アニメーションをすでに設定している時に対象のオブジェクトのパス構造を変えたい時に、アニメーションファイルも同じようにパス構造の変更を反映して欲しい時の解決策です。

現象

アニメーションが設定されている対象のオブジェクトのパス構造を以下のように変更しました。(1階層深くなった)
変更前:
f:id:TAKOYAKING:20200413215152p:plain

変更後:
f:id:TAKOYAKING:20200413215159p:plain

Animation タブ:
f:id:TAKOYAKING:20200413215326p:plain
「Missing!」 で黄色く表示され、黄色くなってしまい、アニメーションが動かなくなってしまいます。

解決

いちいち手動で一つ一つ再設定するのも面倒なので、直接アニメーションファイルを修正します。
[filename].animになっているファイルをテキストファイルで開きます。
次に path: を検索していき、正しいパス名に修正していきます。

写真のサンプル例だと階層が深くなったので、以下のような感じで修正していくことになります。
bone_arm_L -> barb/bone_arm_L
f:id:TAKOYAKING:20200413220731p:plain

感想

動いてよかった!
ただ、boneの階層が変わっただけなので、うまく修正できたけど、他のパターンでもちゃんと修正できるかはわかりません。

git rebase インタラクティブ 途中終了 (git rebase -i)

git rebase -i

インタラクティブモードになった時に、何も変更させずにキャンセルしたい時、どうするのかいつも忘れてしまうので、メモ。

間違い

:q

はrebaseが行われてしまいます。

Rust: use std::io::prelude::*;

Rustでファイル操作をするときにpreludeとuseするのが気になったので、備忘録として残します。

std::io::prelude

std::io::prelude - Rust
よく使用されるioのtraitをimportしてくれる便利なもの

コード

以下のコードはファイルを読み込んでprintする

use std::fs;
use std::path::Path;
use std::io;
use std::io::prelude::*;
use std::io::BufReader;

fn main() {
    cat().unwrap_or_else(|why| panic!(why));
}

fn cat() -> io::Result<()> {
    let path_name = "takoyaki.txt";
    let path = &Path::new(path_name);
    let f = fs::File::open(path)?;
    
    for result in BufReader::new(f).lines() {
        let l = result?;
        println!("{}", l);
    }
    Ok(())
}

これなら問題なく動きます。

もしuse std::io::prelude::*;を記述しなければ以下のようなエラーになる

error[E0599]: no method named `lines` found for struct `std::io::BufReader<std::fs::File>` in the current scope
  --> src/main.rs:17:42
   |
17 |     for (i, result) in BufReader::new(f).lines().enumerate() {
   |                                          ^^^^^ method not found in `std::io::BufReader<std::fs::File>`
   |
   = help: items from traits can only be used if the trait is in scope
help: the following trait is implemented but not in scope; perhaps add a `use` for it:
   |
1  | use std::io::BufRead;
   |

回避方法は以下の2つのうちのどちらかを記述すればOkです。

  • use std::io::prelude::*;
  • use std::io::BufRead;

読み方

プレリュード?

Rust: VSCodeでlibに追加したものをuseすると補完が効かない時

lib.rsで追加したものをmain.rs内でuseして使おうとすると、VSCodeの補完が出ない時がありました。

現象

// プロジェクト名: osaka
src
> lib.rs
> main.rs
use osaka::Takoyaki;
fn main() {
    let takoyaki = Takoyaki {x: 777};
}

このような感じで記述すると、VSCodeでは補完が出ません。構造体のTakoyakiの上にカーソルを合わしても、何も表示してくれません。

解決方法

extern crateをつける

extern crate osaka; // ここです
use osaka::Takoyaki;
fn main() {
    let takoyaki = Takoyaki {x: 777};
}

extern crateをつけてあげると補完が動いてくれます。

感想

extern crateなくてもコンパイルは通るのですが、補完を優先したいので、書いていきたいと思います。

Rust: VSCodeでlibを追加すると認識してくれない時

VSCodeでRustを書いているのですが、libを追加して、それをmain.rs関数の中でuseしてもパスを認識してくれず、赤い波線が表示されてしまいます。rustのコンパイルは通るので文法は間違っていないはずです。

Must reload VSCode window after adding lib.rs to binary project to resolve `use` · Issue #715 · rust-lang/rls-vscode · GitHub
ここに現象についての記述がありました。

再現手順

  1. プロジェクトをcargo initを使って追加する
  2. その後、手動でlib.rsを追加する
  3. main.rsでlib.rsに追加したものをuseしようとする

と赤い波線が出現する

暫定対処方法

VSCodeのWindowをリロードする

やり方はcmd + shift + PでReloadを選択すればOKです。

他の対処方法?

vscodeのrls関連をアップデートする(これで解決するかは不明)

感想

とりあえず暫定的なやり方になってしまいましたが、libファイルは一回しか追加しないので何回もリロードし直すということもないので、ひとまずOKとしておきます。

Asembly Definition 試したけど体感が変わるほど、速くならなかった

Unityを2019.3系にアップデートしてからコンパイル時にレインボーが回るようになって、結構時間がかかるようになってしまいました。
そこでAssembly Definitionを利用すれば、コンパイル時間が速くなるというのを知ったので試してみました。

環境

  • Unity 2019.3.5
  • iMac 2019

目論見

Assembly Definitionを利用すればコンパイルを分割できるので、コンパイル時間を節約できる

実験

試しに一つのソースコードだけを特定のAssembly Definitionで管理するようにしました。

結果

このソースコードを修正した場合は1ソースコード分のコンパイルしか行われないので、めちゃくちゃ速くなるのではと思いましたが、体感は変わらず、相変わらずMacのレインボーが回ったままでした。

感想

体感スピードが変わらなくて、とても残念・・・
Unityを2019.3系にあげるまではここまで遅くなかったので、なんかUnityの問題なような気がしてきました。(想像です。)