[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild4 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
249: 2020/04/23(木)23:16 ID:YqrHMQSi(2/3) AAS
具体的に言うとよくこんな感じになってしまいます
if(a==0){ 処理
}
この2パターンが理想です(場合によって使い分けています)
if(a==0){ 処理 }
if(a==1){
処理
}
設定どこをいじればいいんでしょうか?
250: 2020/04/23(木)23:20 ID:YqrHMQSi(3/3) AAS
間違えました
この2パターンが理想です(場合によって使い分けています)
if(a==0){ 処理 }
if(a==1){
スペース 処理
スペース }
251(1): 2020/04/24(金)02:47 ID:kDHtLuLX(1/2) AAS
プロジェクト内のフォルダを誤って消してしまい、ゴミ箱から元に戻してもscriptがエラーから戻らない場合は復元出来ないのでしょうか……?
252: 2020/04/24(金)02:48 ID:kDHtLuLX(2/2) AAS
拙い文ですみません、試してみて?という感じのアドバイスで良いのでお願いします…
253: 2020/04/24(金)03:32 ID:Yn/wujOk(1/2) AAS
submesh単位で分割する方法ないですかね...
外部リンク:onoty3d.hatenablog.com
このスクリプトだとエラーが出て分割できません
254: 2020/04/24(金)03:52 ID:Yn/wujOk(2/2) AAS
自己解決
255(1): 2020/04/24(金)07:49 ID:mqgYLk8R(1/2) AAS
>>251
裏で作ってるファイルがあるから、それだけでは何とも。エラーをみながらコツコツと直すしかない。
私だけかもしれんが。
256(1): 2020/04/24(金)13:11 ID:TSbisyMR(1) AAS
1日の作業が終わったらプロジェクトフォルダごとバックアップ
NASなんかに保存するのが最高だけど
下手すると年単位の苦労が消し飛ぶから考えた方が良いよ
257(1): 2020/04/24(金)13:39 ID:e94QvqHL(1) AAS
自分も一日の終わりにプロジェクトフォルダごとバックアップしてる
Zip圧縮したファイル名の末尾に日付を入れて一定期間保存
大きな変更を加える直前のフォルダは長期保管してる
258: 2020/04/24(金)15:11 ID:9IIgbh3E(1/4) AAS
プレハブについての質問です
1つのプレハブに↓のようなスクリプトをセットして複製し動かそうとすると
複製したオブジェクトが1つしか動いてくれません
-------
public class prefabMoveScript : MonoBehaviour {
public static GameObject prefabObject;
public static int iNow, jNow;
public static void move()
{
//位置を乱数で変更
int iNum += Random.Range(-1, 1);
int jNum += Random.Range(-1, 1);
prefabObject.transform.localPosition = new Vector3(iNow , jNow , 0.0f);
}
// Use this for initialization
void Start () {
prefabObject = this.gameObject;
}
}
------
複製したプレハブそれぞれを別々の乱数で動作させたいのですがどのようにしたら良いでしょうか
259: 2020/04/24(金)15:29 ID:hbCzfYWk(1/2) AAS
staticじゃなくする
260(1): 2020/04/24(金)15:54 ID:9IIgbh3E(2/4) AAS
すいません一部コードが間違っていました
-------
public class prefabMoveScript : MonoBehaviour {
public static GameObject prefabObject;
public static int iNow, jNow;
public static void move()
{
//位置を乱数で変更
int iNum += Random.Range(-1, 1);
int jNum += Random.Range(-1, 1);
prefabObject.transform.localPosition = new Vector3(iNow + iNum , jNow + jNum , 0.0f);
}
// Use this for initialization
void Start () {
prefabObject = this.gameObject;
}
}
------
staticをつけている変数については、別スクリプトで呼び出して値を代入しているため
staticを外すとエラーが出てしまいます。
261(1): 2020/04/24(金)16:51 ID:hbCzfYWk(2/2) AAS
staticをつけると、その変数は
そのクラスで共通のものになる。
だからこれだと複製したオブジェクト全員が、ある一つのオブジェクトを操作している状態。
262(1): 2020/04/24(金)17:53 ID:mqgYLk8R(2/2) AAS
staticを理解していない?
staticをつけると、簡単に言えばそのワールドで唯一の変数名になる。だから複数から参照操作はできるが、唯一を2つ存在させたら、どっちを参照するかわからんよね?
263(1): 2020/04/24(金)17:57 ID:9IIgbh3E(3/4) AAS
>>261
>>262
staticについて理解できていませんでした。
264(1): 弟子 2020/04/24(金)19:36 ID:X9i2PnLo(1) AAS
>>263
>260のコードで動かすにはこのようにします
多分Staticの使い方というより、prefabの生成に問題あると思います
画像リンク
画像リンク
質問は検証できる弟子を指名してね!
265: 2020/04/24(金)21:22 ID:WKjj9eyG(1) AAS
>>255
>>256
>>257
皆さんありがとうございます、これを教訓にそうすることにします……
266: 2020/04/24(金)21:26 ID:9IIgbh3E(4/4) AAS
>>264
わざわざソースまでありがとうございます!
267(3): 2020/04/25(土)13:09 ID:c8LTCDvQ(1/3) AAS
動画リンク[YouTube]
アニメーションクリップに効果音を付けて4種類のSEの中からランダムで音が出るようにしているのですが、
二回続けて同じ音が出ないようにする方法はないでしょうか。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ken_furu : MonoBehaviour
{
public AudioClip[] _SE; //SEが4個入っています。
private AudioSource audioSourse;
Animator animator;
void Start()
{
animator = GetComponent<Animator>();
audioSourse = GetComponent<AudioSource>();
}
public void SE()
{
int a = Random.Range(0, 4);
audioSourse.PlayOneShot(_SE[a]);
}
}
このスクリプトを音を鳴らすアニメクリップが付いたオブジェクトにアタッチしています。
二回続けて同じ音が出ないようにする方法があったら教えてください。
外部リンク:thuploader.orz.hm プロジェクトファイル
268(1): 2020/04/25(土)13:34 ID:Bwa2wt20(1/3) AAS
aの値を保持して、次の乱数時に比較する
269(1): 2020/04/25(土)13:40 ID:2pXFtKle(1/2) AAS
>>267
色んな方法があると思いますが、
再生する度に再生したSEを除外し、除外されていたSEが存在すれば戻すという処理を入れるのはどうですか?
ランダムのレンジにはLengthやCountが使えますので実装自体は数行済むと思います。
配列をリストにした方が簡単だと思います。
270(1): 267 2020/04/25(土)14:39 ID:c8LTCDvQ(2/3) AAS
>>268の方法は難しそうだったので
>>269の方法で試してみました。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ken_furu : MonoBehaviour
{
//public AudioClip[] _SE;//配列
public List<AudioClip> _SE;//リスト型に変更
private AudioSource audioSourse;
Animator animator;
void Start()
{
animator = GetComponent<Animator>();
audioSourse = GetComponent<AudioSource>();
}
public void SE()
{
int a = Random.Range(0, _SE.Count);//_SE.Count リストの中の要素の個数
audioSourse.PlayOneShot(_SE[a]);
_SE.RemoveAt(a); //一度鳴ったSEを削除
}
}
SEの配列を、リスト型に変更して、一度なったSEを削除するところまでは出来たのですが
消したリストを次のSEを鳴らすときに元に戻すやり方が分かりませんでした。
どうすれば消したリストを元に戻すことができるでしょうか。
271: 2020/04/25(土)15:01 ID:Bwa2wt20(2/3) AAS
>>270
嘘だろぉ、おい!w
272: くまじょ 2020/04/25(土)15:23 ID:z5N+YfUG(1/6) AAS
俺なら前回の覚えておいて
乱数が同じものだったら+1
わずかに乱数に偏りが起こるけど
273(2): くまじょ 2020/04/25(土)15:30 ID:z5N+YfUG(2/6) AAS
乱数が選んだものをリストから抜いてリストの最後に追加しておくとか
乱数の範囲は要素数-1で最後の要素(前回選んだもの)を避ける
初回は必ずリストの最後が選ばれないことになるけど
274: 2020/04/25(土)15:38 ID:DiGw5Kl0(1) AAS
横から失礼します
特定のAudioClipが再生中かどうかを検出するとかってできますか?
例)
if(Audioclip(ジャンプ音)が再生中){ 処理 }
みたいなことがやりたいのですが
275: 2020/04/25(土)15:47 ID:a3TA/N7F(1) AAS
乱数記憶用の変数を用意
初期値は999などの有り得ない数
または一番目に鳴らしたくない音と同じ数
ランダムで出した乱数を変数と比較
もし同じ数字なら+1または-1して処理
(このスクリプトだと3の場合のみ-1)
また乱数(または処理後の数値)を変数に入れる
自分ならこれにするけど何せ初心者なので
もっとスマートなやり方があるならそっちで
276(1): 2020/04/25(土)16:04 ID:2pXFtKle(2/2) AAS
>>273の再生したSEをリストの最後に追加してランダムのレンジに含めないがスマートで実用的かもしれませんね。
+1などで処理すると結局順番に再生されるだけでランダムにならないから質問者の意図する挙動とは違ってしまうんじゃないでしょうか?
277: くまじょ 2020/04/25(土)16:59 ID:z5N+YfUG(3/6) AAS
>>276
乱数が前回と同じ値だったら
1足して剰余でオーバーラン回避だよ
剰余のこと説明不足だった
278: 267 2020/04/25(土)17:19 ID:c8LTCDvQ(3/3) AAS
皆さんから助言を頂いて有難うございました。
>>273の方のやり方で、ずっと試していました。先ほどエラーが全部消えてやっと動くようになりました。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ken_furu : MonoBehaviour
{
public List<AudioClip> _SE;//リスト型 4つのSE
AudioClip DeleteClip; //選ばれて消えたSEを変数に入れる
private AudioSource audioSourse;
Animator animator;
void Start()
{
animator = GetComponent<Animator>();
audioSourse = GetComponent<AudioSource>();
}
public void SE()
{
int a = Random.Range(0, _SE.Count-1);//リストの最後の要素はランダムレンジから外す
audioSourse.PlayOneShot(_SE[a]);//選ばれたSEを鳴らす
AudioClip DeleteClip= _SE[a];//選ばれたSEをDeleteClipの変数に入れる
_SE.RemoveAt(a); //選ばれて鳴ったSEを削除
_SE.Add(DeleteClip); //選ばれて消えたSEをリストの最後に追加
}
}
もしかしたら変な部分があるかもしれませんが、ちゃんと動いているようです。
本当に有難うございました。助かりました。
上下前次1-新書関写板覧索設栞歴
あと 724 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.015s