探検
製作途中で得たUnityのミニ知識を披露するスレ
■ このスレッドは過去ログ倉庫に格納されています
2017/11/27(月) 21:03:55.76ID:wuqv6ZUu
いる?
2018/03/23(金) 16:35:57.22ID:vAC3q6AE
コルーチンのyieldのサンプルってさ
yield return new WaitForSecondsRealtime(5);
とかなってね、毎回newするけどさ
これ別のとこで作成して
private WaitForSeconds wfTime;
wfTime = new WaitForSeconds(0.1f);
として
yield return wfTime;
でも行けるね
それから時間変更は再度newすれば
wfTime = new WaitForSeconds(0f);
OKですね、ちなみに0指定すると、ただの yield return null; と一緒かな
yield return new WaitForSecondsRealtime(5);
とかなってね、毎回newするけどさ
これ別のとこで作成して
private WaitForSeconds wfTime;
wfTime = new WaitForSeconds(0.1f);
として
yield return wfTime;
でも行けるね
それから時間変更は再度newすれば
wfTime = new WaitForSeconds(0f);
OKですね、ちなみに0指定すると、ただの yield return null; と一緒かな
36名前は開発中のものです。
2018/03/28(水) 04:30:40.73ID:HPBo1FRD やヴぁう
Toggleの設定がよくわからいい
ちょっと明日、ってか今日か確認して結果上げる
Toggleの設定がよくわからいい
ちょっと明日、ってか今日か確認して結果上げる
2018/03/28(水) 13:04:45.22ID:tgPjGqdr
了解しました。
2018/03/28(水) 13:22:23.73ID:HPBo1FRD
うん、検証してみたけど、
cb.normalColor はボタン押した一回しか変更されず、そのあとトグル押すとwhiteになるが、highlightedColorはそのままですね
とおもったら、なんかフォーカスが移った時にはnormalColorなのか、うん分かりにくい
分かりにくいと言えば、このチェックマーク自体が・・・
ttps://i.gyazo.com/a6bdc3801eb73b31bc9ab48a82eafb6d.png
なんか色々やってたら、替えれたわ
ttps://i.gyazo.com/58cfaa990840f929a72c1358c252941a.png
cb.normalColor はボタン押した一回しか変更されず、そのあとトグル押すとwhiteになるが、highlightedColorはそのままですね
とおもったら、なんかフォーカスが移った時にはnormalColorなのか、うん分かりにくい
分かりにくいと言えば、このチェックマーク自体が・・・
ttps://i.gyazo.com/a6bdc3801eb73b31bc9ab48a82eafb6d.png
なんか色々やってたら、替えれたわ
ttps://i.gyazo.com/58cfaa990840f929a72c1358c252941a.png
2018/03/28(水) 19:06:31.01ID:HPBo1FRD
ついでに、UIでマウスイベントの取得方法
UIでOnMouseEnterとかのマウスイベント取得する場合、取得したいUIにコライダーをアタッチする(コライダーの領域を調整する)
CanvasはRenderModeをScreenSpace-Cameraにする
これでUI上でOnMouseXXX系の処理が可能
UIでOnMouseEnterとかのマウスイベント取得する場合、取得したいUIにコライダーをアタッチする(コライダーの領域を調整する)
CanvasはRenderModeをScreenSpace-Cameraにする
これでUI上でOnMouseXXX系の処理が可能
2018/04/16(月) 12:18:11.83ID:HkgBqI4K
Toggleのスクリプト時追加方法とイベント取得の忘備録
まずToggleの様なコンポーネントはAddComponentする
private Toggle tgl;
tgl = gameObject.AddComponent<Toggle>();
グループ化するには、同じようにToggleGroupを追加してtgl.group = で指定しRegsterToggleしておく
トグルのonValueChangedを使うにはdelegate で行う(これは公式にある)
tgl.onValueChanged.AddListener(delegate { ToggleValueChanged(tgl);});
他がセレクトされて自身が解除された場合の取得は、まずusing UnityEngine.EventSystems;を追加、自身のスクリプトの継承に IDeselectHandlerを追加するとOnDeselectイベントが使える
まずToggleの様なコンポーネントはAddComponentする
private Toggle tgl;
tgl = gameObject.AddComponent<Toggle>();
グループ化するには、同じようにToggleGroupを追加してtgl.group = で指定しRegsterToggleしておく
トグルのonValueChangedを使うにはdelegate で行う(これは公式にある)
tgl.onValueChanged.AddListener(delegate { ToggleValueChanged(tgl);});
他がセレクトされて自身が解除された場合の取得は、まずusing UnityEngine.EventSystems;を追加、自身のスクリプトの継承に IDeselectHandlerを追加するとOnDeselectイベントが使える
2018/04/19(木) 22:32:22.34ID:DX/Z9/AJ
ちょっとしたミニ知識、というまでもないかな
staticを使いたいけど、publicでインスペクタで指定したい場合これにstaticは付けられない
そんな時は
1. public Text txtMain;
2. static private Text stxtMain;
こんな感じで1をインスペクタで指定する
んで
private void Awake()
{
stxtMain = txtMain;
}
こんな感じで参照してすれば、どちらも使用可能で同じオブジェクトを使える
staticを使いたいけど、publicでインスペクタで指定したい場合これにstaticは付けられない
そんな時は
1. public Text txtMain;
2. static private Text stxtMain;
こんな感じで1をインスペクタで指定する
んで
private void Awake()
{
stxtMain = txtMain;
}
こんな感じで参照してすれば、どちらも使用可能で同じオブジェクトを使える
2018/04/22(日) 12:08:44.69ID:ixXXVG5k
■TimeLineでのスクリプトについての忘備録1
TimeLineでスクリプトを使うには、最低でも2つのスクリプトが必要
PlayableAssetとPlayableBehaviour
TimeLineエディタでPlayaleTrackをAddで追加する
このトラックにPlayableAssetを指定する
PlayableAsset内ではPlayableBehaviourを指定する、これでPlayableBehaviour内で停止時などの関数が利用できる
外部からプレイなどを制御するにはPlayableDirectorを指定して制御する
一番簡単なのは、Publicでインスペクタから指定するのがいい
尚、Trackに同じPlayableAssetを複数使う場合、どこがPlayしているか特定するにはHashCodeを利用すれば可能
PlayableAssetのGetPlayableCountでそれぞれの番号は取得可能だが、これを利用する手立てが…誰かわかれば教えて><
ttps://i.gyazo.com/b7b569b05d0eacd9e028987fc43be89f.png
TimeLineでスクリプトを使うには、最低でも2つのスクリプトが必要
PlayableAssetとPlayableBehaviour
TimeLineエディタでPlayaleTrackをAddで追加する
このトラックにPlayableAssetを指定する
PlayableAsset内ではPlayableBehaviourを指定する、これでPlayableBehaviour内で停止時などの関数が利用できる
外部からプレイなどを制御するにはPlayableDirectorを指定して制御する
一番簡単なのは、Publicでインスペクタから指定するのがいい
尚、Trackに同じPlayableAssetを複数使う場合、どこがPlayしているか特定するにはHashCodeを利用すれば可能
PlayableAssetのGetPlayableCountでそれぞれの番号は取得可能だが、これを利用する手立てが…誰かわかれば教えて><
ttps://i.gyazo.com/b7b569b05d0eacd9e028987fc43be89f.png
2018/04/22(日) 12:13:06.43ID:ixXXVG5k
■TimeLineでのスクリプトについての忘備録2
スクリプトでシーン上のオブジェクトを利用する場合
まずPlayableAssetで
public ExposedReference<UnityEngine.GameObject> m_MySceneObject;
と宣言、 public override Playable CreatePlayable内にて
クラス型 playableBehaviour = new クラス型();
playableBehaviour.m_MySceneObject = m_MySceneObject.Resolve(graph.GetResolver());
とする
スクリプトPlayableBehaviourでは
public GameObject m_MySceneObject { get; internal set; }
これでこのGameObject に対して色々と命令が出せる
スクリプトでシーン上のオブジェクトを利用する場合
まずPlayableAssetで
public ExposedReference<UnityEngine.GameObject> m_MySceneObject;
と宣言、 public override Playable CreatePlayable内にて
クラス型 playableBehaviour = new クラス型();
playableBehaviour.m_MySceneObject = m_MySceneObject.Resolve(graph.GetResolver());
とする
スクリプトPlayableBehaviourでは
public GameObject m_MySceneObject { get; internal set; }
これでこのGameObject に対して色々と命令が出せる
2018/05/03(木) 14:27:48.38ID:Sxk8HZSj
公式のシーン読み出しのサンプルやってみた
ttps://docs.unity3d.com/ja/current/ScriptReference/SceneManagement.SceneManager-sceneLoaded.html
シーンがロードされたとき、アンロードされたときが欲しかったのでこのサンプルが使える
void Awake() { Debug.Log("Awake"); }
void OnEnable()
{
SceneManager.sceneLoaded += OnSceneLoaded;
SceneManager.sceneUnloaded += OnSceneUnLoaded;
}
void OnSceneLoaded(Scene scene, LoadSceneMode mode) { Debug.Log("OnSceneLoaded: " + scene.name + ",mode:" + mode); }
void Start()
{
Debug.Log("Start");
SceneManager.LoadScene("s2" , LoadSceneMode.Additive);
}
public void UnloadS2() { SceneManager.UnloadSceneAsync("s2"); }
void OnSceneUnLoaded(Scene scene) { Debug.Log("OnSceneUnLoaded: " + scene.name ); }
コード補正がかかるからわかると思うけど、UnLoadの時のパラメータはSceneのみになる
ttps://docs.unity3d.com/ja/current/ScriptReference/SceneManagement.SceneManager-sceneLoaded.html
シーンがロードされたとき、アンロードされたときが欲しかったのでこのサンプルが使える
void Awake() { Debug.Log("Awake"); }
void OnEnable()
{
SceneManager.sceneLoaded += OnSceneLoaded;
SceneManager.sceneUnloaded += OnSceneUnLoaded;
}
void OnSceneLoaded(Scene scene, LoadSceneMode mode) { Debug.Log("OnSceneLoaded: " + scene.name + ",mode:" + mode); }
void Start()
{
Debug.Log("Start");
SceneManager.LoadScene("s2" , LoadSceneMode.Additive);
}
public void UnloadS2() { SceneManager.UnloadSceneAsync("s2"); }
void OnSceneUnLoaded(Scene scene) { Debug.Log("OnSceneUnLoaded: " + scene.name ); }
コード補正がかかるからわかると思うけど、UnLoadの時のパラメータはSceneのみになる
2018/09/16(日) 15:15:08.03ID:LNRMkHTN
>>32
Unityのバージョンによって、変数名refが使用できませんでしたのでご注意ください
Unityのバージョンによって、変数名refが使用できませんでしたのでご注意ください
2018/09/30(日) 03:02:08.43ID:ZYtSqOch
getcomponentはインターフェイスもTに指定出来る
47名前は開発中のものです。
2018/11/11(日) 09:10:47.35ID:8o4S5YXl48名前は開発中のものです。
2019/02/17(日) 09:48:35.12ID:aTvJx0H4 Visual Studioで覚えたてのメソッドやコールバックは次々とツールボックスにD&Dで登録すると、次に使いたくなればそのツールパネルからD&Dすりゃ楽だしスペルミスもしない。
しかもエディットフィールドの横に常時ピン止めするとコード書く時間も短縮する。
https://i.imgur.com/PJMI7ZI.jpg
しかもエディットフィールドの横に常時ピン止めするとコード書く時間も短縮する。
https://i.imgur.com/PJMI7ZI.jpg
49名前は開発中のものです。
2019/02/17(日) 10:29:36.15ID:aTvJx0H4 メソッドやクラスプロパティなんか普通に書いてたら意味はわかる(読むことは出来る)。
けど、どんな引数(パラメータ)が必要で戻り値はvoid(無し)だったっけ?triggerだっけTrrigerだっけスペル間違っていてなぜかIntelisense(入力補間機能)でも使いたい物がでないよ。
みたいな人には必要だと思うよ。
Visual Studio2017のBuilt inで入ってる付属ツールだけでできる、拡張機能探しダウンロードしてインストールとかしなくても出来ることだし。
けど、どんな引数(パラメータ)が必要で戻り値はvoid(無し)だったっけ?triggerだっけTrrigerだっけスペル間違っていてなぜかIntelisense(入力補間機能)でも使いたい物がでないよ。
みたいな人には必要だと思うよ。
Visual Studio2017のBuilt inで入ってる付属ツールだけでできる、拡張機能探しダウンロードしてインストールとかしなくても出来ることだし。
2019/02/18(月) 12:59:35.72ID:S//uxG55
ああすまん
まあそういうのをスニペット snippetと言って流行って来てるけど。
ツールボックスはプロジェクト変えたりあれこれしたらすぐデータ飛ぶらしいんだ。
MSはそれに対処する気がないらしいし。
ツールボックスじゃなくべつのスニペットツール開発してるし。
ここみて各自適当に適当なツール使ってね。
https://qiita.com/crasae/items/a5fcbb52ceaf89d3af33
シェアウェアでなら、Visual AsistantのVA Snippetが素晴らしいよね。
30days Trialあるから使ってみては
まあそういうのをスニペット snippetと言って流行って来てるけど。
ツールボックスはプロジェクト変えたりあれこれしたらすぐデータ飛ぶらしいんだ。
MSはそれに対処する気がないらしいし。
ツールボックスじゃなくべつのスニペットツール開発してるし。
ここみて各自適当に適当なツール使ってね。
https://qiita.com/crasae/items/a5fcbb52ceaf89d3af33
シェアウェアでなら、Visual AsistantのVA Snippetが素晴らしいよね。
30days Trialあるから使ってみては
51弟子 ◆rZPPjYuxmQ
2019/11/23(土) 11:24:49.09ID:l0P9p1Sz 久しぶりにミニ知
monobehaviorのstartやupdateについて
こいつらってvirtiualじゃないからoverride出来ないけど
継承先にあればそれが起動、無ければ元のが起動するみたいね
確認は2019.2.6f1
恐らくawakeやfixedupdate関係もそうでしょう
unity独自の仕様でこれは便利
monobehaviorのstartやupdateについて
こいつらってvirtiualじゃないからoverride出来ないけど
継承先にあればそれが起動、無ければ元のが起動するみたいね
確認は2019.2.6f1
恐らくawakeやfixedupdate関係もそうでしょう
unity独自の仕様でこれは便利
52弟子 ◆rZPPjYuxmQ
2019/11/23(土) 11:36:48.38ID:l0P9p1Sz ついでにコライダーの確認方法について
1つのオブジェクトに複数のコライダーをアタッチした場合、それぞれをどう認識するか?
残念ながら個々を認識するためのコードは存在せずhashcodeで行けそうだけど、じゃそれがどのコライダー?
となる
例、Gameojectにboxcolliderとcirclecolliderが付いてる場合、状況で片方をenableにしたい
しかしどうやらこれはgetcomponentsで取得する場合にはinspectorの順番で取得できるうようである
なのでその順番で管理できす感じ
何か個々を識別できると超いいんだけど・・・
1つのオブジェクトに複数のコライダーをアタッチした場合、それぞれをどう認識するか?
残念ながら個々を認識するためのコードは存在せずhashcodeで行けそうだけど、じゃそれがどのコライダー?
となる
例、Gameojectにboxcolliderとcirclecolliderが付いてる場合、状況で片方をenableにしたい
しかしどうやらこれはgetcomponentsで取得する場合にはinspectorの順番で取得できるうようである
なのでその順番で管理できす感じ
何か個々を識別できると超いいんだけど・・・
2019/12/01(日) 15:12:31.14ID:AUfu0sBS
>>54
Baseを使う場合にはprotectedかvirtualにしておく必要はあるぽい
Baseを使う場合にはprotectedかvirtualにしておく必要はあるぽい
56弟子 ◆rZPPjYuxmQ
2020/01/08(水) 10:28:11.27ID:7cplqCOI vector2.Angleの使い方、これは2点の線の角度を返すが、これは原点からこの2点を結んだ角度になる
そこで、2点の角度を出したい場合には次の様にする
Vector2 v =StrPos;
Vector2 v2 = EndPos - v;
Vector2 v3 = Vector2.zero;
v3.x = v2.x;
Vector2.Angle(v2, v3);
つまりスタート地点を原点に持って行き、本来無い3点目を置くことで目的の角度を取得
そこで、2点の角度を出したい場合には次の様にする
Vector2 v =StrPos;
Vector2 v2 = EndPos - v;
Vector2 v3 = Vector2.zero;
v3.x = v2.x;
Vector2.Angle(v2, v3);
つまりスタート地点を原点に持って行き、本来無い3点目を置くことで目的の角度を取得
57弟子
2020/01/26(日) 16:53:23.80ID:ckFKG1Im 複数キー押しっぱ入力を複数のシーンに展開しても入力を取りたい
公式の見解によるとシーンをシングル遷移すると入力がリセットされる
しかし現時点で何故か複数キーを押下してても何故か最後の入力だけ引き摺る状態てありこれはバグとの事
そこでリセットさせずに入力を継続させるには、ダミーシーンを全体に置いて、この中でシーンのロード、あんろーどを行うと、ダミーシーンはずっと存在した形になるので入力を継続できる
公式の見解によるとシーンをシングル遷移すると入力がリセットされる
しかし現時点で何故か複数キーを押下してても何故か最後の入力だけ引き摺る状態てありこれはバグとの事
そこでリセットさせずに入力を継続させるには、ダミーシーンを全体に置いて、この中でシーンのロード、あんろーどを行うと、ダミーシーンはずっと存在した形になるので入力を継続できる
58弟子
2020/02/27(木) 11:07:01.84ID:fVMfcjq3 アニメーションクリップの黄色い文字の修正には
【Unity】AnimationClipのMissingなパスを見つけて解決しやすくするエディタ拡張
http://tsubakit1.hateblo.jp/entry/2016/01/26/015331#%E5%B0%8E%E5%85%A5%E3%81%A8%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89
これが正解
他のは値がクリアされたりする
【Unity】AnimationClipのMissingなパスを見つけて解決しやすくするエディタ拡張
http://tsubakit1.hateblo.jp/entry/2016/01/26/015331#%E5%B0%8E%E5%85%A5%E3%81%A8%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89
これが正解
他のは値がクリアされたりする
59弟子
2020/03/20(金) 10:14:48.41ID:oIj78xAx マテリアルの変更
rendere.sharedMaterials = materials;
これでマテリアルセットすべて変更可能
rendere.sharedMaterials[0] = materials[0];
rendere.sharedMaterials[1] = materials[1];
これだと1が変更されない、そこで
rendere.sharedMaterial = material で0が変更される
マテリアルについては動きが謎だな
rendere.sharedMaterials = materials;
これでマテリアルセットすべて変更可能
rendere.sharedMaterials[0] = materials[0];
rendere.sharedMaterials[1] = materials[1];
これだと1が変更されない、そこで
rendere.sharedMaterial = material で0が変更される
マテリアルについては動きが謎だな
60弟子
2020/04/28(火) 17:53:44.16ID:2pVOTjQO 特定のAudioClipが再生中かどうか判定する
if(audioSource.isPlaying)
GUILayout.TextField(" play Now :" + audioSource.clip.name);
else
GUILayout.TextField(" pause!! ");
AudioSourceにはisPlayingがあり、これで再生中のClipを取得できる
そこでその名前を比較すればどの音源が再生しているか分かる
if(audioSource.isPlaying)
GUILayout.TextField(" play Now :" + audioSource.clip.name);
else
GUILayout.TextField(" pause!! ");
AudioSourceにはisPlayingがあり、これで再生中のClipを取得できる
そこでその名前を比較すればどの音源が再生しているか分かる
■ このスレッドは過去ログ倉庫に格納されています
