【ゲームエンジン】Unity初心者質問スレBuild4

■ このスレッドは過去ログ倉庫に格納されています
1名前は開発中のものです。
垢版 |
2020/03/29(日) 19:35:12.24ID:mirhKW7D
ゲームエンジンUnityを楽しむ初心者による初心者の為のスレ
その為「アセットを購入しましょう」「チュートリアルやれ」「ググレカス」等禁止
初心者が親身になって初心者に教える。
又ググレの場合、何のキーワードでググるのか書いてね

●リンク
・Unity(日本公式サイト)
http://unity3d.com/jp
・マニュアル
 http://docs.unity3d.com/ja/current/Manual/index.html
・チュートリアル
 http://unity3d.com/jp/learn/tutorials
・スクリプトリファレンス
 http://docs.unity3d.com/ja/current/ScriptReference/index.html
・FAQ
 http://unity3d.com/jp/unity/faq
・MSDN
 http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
※前スレ
【ゲームエンジン】Unity初心者質問スレBuild3
https://itest.5ch.net/mevius/test/read.cgi/gamedev/1578720539
250名前は開発中のものです。
垢版 |
2020/04/23(木) 23:20:04.38ID:YqrHMQSi
間違えました

この2パターンが理想です(場合によって使い分けています)
if(a==0){ 処理 }

if(a==1){
スペース 処理
スペース }
2020/04/24(金) 02:47:01.33ID:kDHtLuLX
プロジェクト内のフォルダを誤って消してしまい、ゴミ箱から元に戻してもscriptがエラーから戻らない場合は復元出来ないのでしょうか……?
2020/04/24(金) 02:48:12.32ID:kDHtLuLX
拙い文ですみません、試してみて?という感じのアドバイスで良いのでお願いします…
2020/04/24(金) 03:32:53.73ID:Yn/wujOk
submesh単位で分割する方法ないですかね...
http://onoty3d.hatenablog.com/entry/2015/12/09/000000
このスクリプトだとエラーが出て分割できません
2020/04/24(金) 03:52:09.99ID:Yn/wujOk
自己解決
2020/04/24(金) 07:49:35.90ID:mqgYLk8R
>>251
裏で作ってるファイルがあるから、それだけでは何とも。エラーをみながらコツコツと直すしかない。
私だけかもしれんが。
2020/04/24(金) 13:11:03.27ID:TSbisyMR
1日の作業が終わったらプロジェクトフォルダごとバックアップ
NASなんかに保存するのが最高だけど
下手すると年単位の苦労が消し飛ぶから考えた方が良いよ
2020/04/24(金) 13:39:06.03ID:e94QvqHL
自分も一日の終わりにプロジェクトフォルダごとバックアップしてる
Zip圧縮したファイル名の末尾に日付を入れて一定期間保存
大きな変更を加える直前のフォルダは長期保管してる
2020/04/24(金) 15:11:35.58ID:9IIgbh3E
プレハブについての質問です

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;

}
}
------
複製したプレハブそれぞれを別々の乱数で動作させたいのですがどのようにしたら良いでしょうか
2020/04/24(金) 15:29:16.14ID:hbCzfYWk
staticじゃなくする
2020/04/24(金) 15:54:14.93ID:9IIgbh3E
すいません一部コードが間違っていました
-------
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を外すとエラーが出てしまいます。
2020/04/24(金) 16:51:57.34ID:hbCzfYWk
staticをつけると、その変数は
そのクラスで共通のものになる。

だからこれだと複製したオブジェクト全員が、ある一つのオブジェクトを操作している状態。
2020/04/24(金) 17:53:17.83ID:mqgYLk8R
staticを理解していない?
staticをつけると、簡単に言えばそのワールドで唯一の変数名になる。だから複数から参照操作はできるが、唯一を2つ存在させたら、どっちを参照するかわからんよね?
2020/04/24(金) 17:57:06.91ID:9IIgbh3E
>>261
>>262
staticについて理解できていませんでした。
264弟子
垢版 |
2020/04/24(金) 19:36:00.79ID:X9i2PnLo
>>263

>260のコードで動かすにはこのようにします
多分Staticの使い方というより、prefabの生成に問題あると思います
https://i.gyazo.com/9eea2661448b7a1af4e8291b55adfe25.png
https://imgur.com/dBRzNly

質問は検証できる弟子を指名してね!
2020/04/24(金) 21:22:53.35ID:WKjj9eyG
>>255

>>256

>>257
皆さんありがとうございます、これを教訓にそうすることにします……
2020/04/24(金) 21:26:22.99ID:9IIgbh3E
>>264
わざわざソースまでありがとうございます!
2020/04/25(土) 13:09:23.62ID:c8LTCDvQ
https://youtu.be/clB_Q-4N2mM
アニメーションクリップに効果音を付けて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]);
}

}

このスクリプトを音を鳴らすアニメクリップが付いたオブジェクトにアタッチしています。
二回続けて同じ音が出ないようにする方法があったら教えてください。
https://thuploader.orz.hm/miniup/?mode=dl&;id=7354 プロジェクトファイル
2020/04/25(土) 13:34:15.67ID:Bwa2wt20
aの値を保持して、次の乱数時に比較する
2020/04/25(土) 13:40:39.58ID:2pXFtKle
>>267
色んな方法があると思いますが、
再生する度に再生したSEを除外し、除外されていたSEが存在すれば戻すという処理を入れるのはどうですか?

ランダムのレンジにはLengthやCountが使えますので実装自体は数行済むと思います。
配列をリストにした方が簡単だと思います。
270267
垢版 |
2020/04/25(土) 14:39:00.19ID:c8LTCDvQ
>>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を鳴らすときに元に戻すやり方が分かりませんでした。
どうすれば消したリストを元に戻すことができるでしょうか。
2020/04/25(土) 15:01:53.19ID:Bwa2wt20
>>270
嘘だろぉ、おい!w
272くまじょ
垢版 |
2020/04/25(土) 15:23:53.23ID:z5N+YfUG
俺なら前回の覚えておいて
乱数が同じものだったら+1
わずかに乱数に偏りが起こるけど
273くまじょ
垢版 |
2020/04/25(土) 15:30:30.75ID:z5N+YfUG
乱数が選んだものをリストから抜いてリストの最後に追加しておくとか
乱数の範囲は要素数-1で最後の要素(前回選んだもの)を避ける
初回は必ずリストの最後が選ばれないことになるけど
2020/04/25(土) 15:38:16.06ID:DiGw5Kl0
横から失礼します
特定のAudioClipが再生中かどうかを検出するとかってできますか?

例)
if(Audioclip(ジャンプ音)が再生中){  処理 }

みたいなことがやりたいのですが
2020/04/25(土) 15:47:10.29ID:a3TA/N7F
乱数記憶用の変数を用意
初期値は999などの有り得ない数
または一番目に鳴らしたくない音と同じ数

ランダムで出した乱数を変数と比較
もし同じ数字なら+1または-1して処理
(このスクリプトだと3の場合のみ-1)
また乱数(または処理後の数値)を変数に入れる

自分ならこれにするけど何せ初心者なので
もっとスマートなやり方があるならそっちで
2020/04/25(土) 16:04:41.65ID:2pXFtKle
>>273の再生したSEをリストの最後に追加してランダムのレンジに含めないがスマートで実用的かもしれませんね。

+1などで処理すると結局順番に再生されるだけでランダムにならないから質問者の意図する挙動とは違ってしまうんじゃないでしょうか?
277くまじょ
垢版 |
2020/04/25(土) 16:59:40.05ID:z5N+YfUG
>>276
乱数が前回と同じ値だったら
1足して剰余でオーバーラン回避だよ
剰余のこと説明不足だった
278267
垢版 |
2020/04/25(土) 17:19:22.65ID:c8LTCDvQ
皆さんから助言を頂いて有難うございました。
>>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をリストの最後に追加
}
}
もしかしたら変な部分があるかもしれませんが、ちゃんと動いているようです。
本当に有難うございました。助かりました。
279名前は開発中のものです。
垢版 |
2020/04/25(土) 17:57:08.46ID:P2OYyiKX
Unityで2Dゲームを作ろうとしていますが、小さい表示枠と大きい表示枠について教えて下さい。

画像をSceneに配置すると小さい枠の中に置いたものが実行時に表示され、座標はたとえば-2〜+2です。
ヒエラルキーからUIのButtonを配置すると大きい枠の中に置かれ、座標は0-1000などの設定した画面サイズの値になります。
2つの座標系があるようなのですが、Sceneで見ると重なっていないのに実行すると上記の2つ枠は重なって表示されるようです。

なんでこんなことになってるんでしょうか?
両者を混在して使ってると実行環境によってずれが生じそうですが大丈夫なんでしょうか?
また「Unityの教科書 Unity 2019完全対応版」を読みましたが、次に読むと良さそうな本があったら教えて下さい。
280くまじょ
垢版 |
2020/04/25(土) 18:16:48.37ID:z5N+YfUG
>>279
それな
俺はunity初心者
座標面倒
キャンバスにイメージとスプライト混在したり一貫性ないなあ
281くまじょ
垢版 |
2020/04/25(土) 18:23:08.63ID:z5N+YfUG
>>279
シーンで見ると大きさが違うのと位置がずれてるのが邪魔で仕方ない

シーンで同じ位置同じ大きさ(見た目のことで座標の数値は違う)にするか

いっそのことシーンでは離れているが実行時に同じにしてみたり
重なってると邪魔なので

キャンバスのインスペクタを弄れば見た目の大きさは揃うよ
座標は-2とかのままがイイみたい
あれはメートルって意味らしい
282くまじょ
垢版 |
2020/04/25(土) 18:23:58.70ID:z5N+YfUG
詳しいことは俺も知りたい
2020/04/25(土) 18:32:34.76ID:Bwa2wt20
>>279
1冊読んで1本作れたなら、漠然とした指南は必要ないかなぁ。
あとは、ネットやるならオンライン系とか、作りたいものに合わせて選ぶだけだよ。
まだ1本も完成させてないなら、本より作り上げることかな。
284279
垢版 |
2020/04/25(土) 20:19:30.59ID:P2OYyiKX
>>280-282
やっぱりわかりづらいですよね
作りながら学んでいくしかないですかね

>>283
いま最初の一本を作ってるところです。
とりあえずわかる範囲で動くものを作ってみることにします。
2020/04/26(日) 17:01:21.87ID:0LPIhU5v
・シーンにオブジェクトAとBを作る
・Bをプレハブ化
・GetComponentを記したスクリプトをBにアタッチ、そのインスペクタ内でAをアタッチ
・いざ実行すると、後者からAが消えておりnullが入ってる

これはどういうカラクリ?
GetComponentで保持できるのは同一シーン内のオブジェクトだけで、
プレハブは別シーン扱いだから不可ってこと?
286名前は開発中のものです。
垢版 |
2020/04/26(日) 20:07:03.91ID:y6nEuqYj
初心者すぎる質問で申し訳ない
自分の街の地図データ(OSM)をUnityに取り込みたい
OSM2World(http://osm2world.org/download/)をダウンロードして
以下の記事を参考に頑張っているのだけど、
https://qiita.com/hiroga/items/8f8496af23c3661f4092
使い方wiki(https://wiki.openstreetmap.org/wiki/JA:OSM2World)に書いてあるGUI操作というものが分からずOSM2World を実行できずにいる
ダウンロードした中にアプリケーションらしきファイルはないし、どうやって実行するのか分からない
2020/04/27(月) 07:09:26.36ID:bdPBx+if
垢付き無視されてて草
2020/04/27(月) 15:39:27.94ID:slOrZu1n
エアプババアこと煖エ聖子さーん!
Unity 触ったこともないくせにググって出てきたブログの内容をパクってスレに書き込まないでくださーい!
2020/04/27(月) 19:31:18.81ID:S31Ss8MO
画面をドラッグしたらそれに合わせて
画面中心に置いてあるキューブのオブジェクトが回転するようにしたのですが、
例外的に画面のUI部分をドラッグしても何も起きないようにしたいです。

試しに画面内にボタンを配置してみますと、
ボタン部分をドラッグしてもキューブは回転しませんでした。

ですが、ボタンではなくスクロールビューを配置しますと、
スクロールビュー内で中身をスクロールさせる際に
キューブも回転してしまいます。

これは何が原因なのでしょうか?

スクロールビュー内でスクロールさせても、
キューブは回転しないようにしたいのですが。。。
290名前は開発中のものです。
垢版 |
2020/04/27(月) 22:29:11.94ID:BsJwJx+j
ローグライクゲームで使われるようなテキストボックスの作り方を教えてください

具体的にはテキストボックスは4行目まで表示可能で
5行以上のテキストは初めに上4行が表示され、時間経過で下4行まで
スライドするようなものです

文字のフォントサイズとスライドの幅の関係がわからず
行数が増えてしまうと文字が見切れてしまうのですが
どうしたらよいでしょうか
2020/04/28(火) 08:42:29.47ID:UBexnHTQ
アセットストアで探すのはダメか?
2020/04/28(火) 08:57:56.02ID:NcdKxY7p
ありよ
293くまじょ
垢版 |
2020/04/28(火) 10:45:18.76ID:9EVv0REZ
UIのTextではなくて
GameObjectの子要素として文字や数字を表示したいときどうするのでしょうか
294帝王
垢版 |
2020/04/28(火) 19:39:00.29ID:+kIsn7nO
TextMeshProとかでできるんじゃないのーー?
(適当)
2020/04/28(火) 20:05:51.71ID:g/IoFmi8
UGUIのイメージをドラッグして移動させたいのですが、
canvasの設定をscreenspace overlayからcameraに変更するとドラッグ中に描画されなくなってしまいます。
パーティクルを前面に表示させるためにcanvasの設定を変えました。

考えられる原因はありますか?
2020/04/29(水) 02:19:06.55ID:QIimNiIX
なぁ
初心者じゃないよな?
2020/04/29(水) 02:25:33.41ID:0hW05Uib
上級者ばかりやんけ
298295
垢版 |
2020/04/29(水) 05:03:31.36ID:AYSL0fpT
>>296
自分の事でしょうか?
練習でトランプを作っていて、初心者なので全てUIで作ってしまいました。
アセットセールで初めて買ったパーティクルをエフェクトとして表示したかったのですが、UIが最前面に来るので表示できませんでした。

自分で調べてcanvasの設定を変えることでパーティクルは表示されたのですが、カードをドラッグすると消えてしまう様になりました。

2Dのゲームを作る時のカードの絵?オブジェクト?というのはどうやって表示させるのが正しいのでしょうか?
いつもcanvasを1つ作って全てその中にUIで作ってしまっています。。
2020/04/29(水) 05:22:31.24ID:sJVhQ7Za
エディタ拡張を使ってゲームオブジェクトの変数をいじってみたのですが、実行してみると、
↓のような感じで、inspector上で直接打ち込んだ数字に戻ってしまいます
https://i.imgur.com/REjqphY.png

どうにか保持する方法はないでしょうか?
300くまじょ
垢版 |
2020/04/29(水) 06:37:53.69ID:2WIq4ayc
>>299
俺と似たような現象だな
解決策は知らない
2020/04/29(水) 07:31:32.43ID:C9mEi4oT
>>298
自分も初心者だけど(しかも始めたばかり)

教本のサンプルスクリプトを改変しながら一本作ったところ
2Dの画像はUIから作る他にヒエラルキーに直接ドラッグ&ドロップする方法があってこの方法で作ったゲームオブジェクトはUIから作ったimageとは仕様が違うということがわかった

全く同じスクリプトを関連づけても動作しなかったり
等倍のはずなのに画像の表示サイズが微妙に大きかったり
UIキャンバスに入れると表示されなくなったり

別の教本では2Dオブジェクト→spriteで同じような用途の画像オブジェクトを作ってたからヒエラルキーにドラックドロップするとspriteになるのかも
Collider2Dで他のオブジェクトとの衝突判定を付けたい2D画像はそうやって配置するというところまでは理解できたけどそれ以上はさっぱりわからない
どれが正しいかじゃなくて用途によって使い分けるみたいだけどね
302301
垢版 |
2020/04/29(水) 07:40:32.28ID:C9mEi4oT
投稿してから思い出したけど

同じ著者の別の教本のアプリではUIから作った2D画像にCollider2Dで衝突判定付けてたなぁ
実際に作ってみたけど問題なく動いたし
違うものだということは把握したけど違いがよくわからない
2020/04/29(水) 08:25:51.33ID:IMZ53Uaz
>>295
ドラッグ中のオブジェクトの座標見るとどっか遠いところに行ってるんじゃないの
2020/04/29(水) 08:30:41.83ID:AYSL0fpT
>>301
トランスフォームの違いが一番のポイントかと思いますが、仰る通りそれによってサイズや座標違ったりするのが初心者には辛いですね。

シーン画面だとスケール1のスプライトがキャンバスに対して点みたいなサイズになったりしてわけがわかりません。。

初心者がUnityを覚えるには興味が無くても3Dからやった方が良いですね。
自分みたいにカメラや座標の概念が無いまま画像を表示するにはUIからイメージを作りましょう〜みたいな入門を見てしまったら終わりです。

最初にさせてもらった質問についてはいくつか解決案が見つかったのでもう少し頑張ってみます。
2020/04/29(水) 08:38:49.37ID:AYSL0fpT
>>303
予想ですがドラッグしてる位置の座標がoverlayの時はrecttransformだったのに対して、ワールド座標になったために遥か彼方に飛んでいってしまったんだと思います。

これをどうにかすれば良いと言う事はなんとなくわかったので調べてやってみます。
無理そうならoverlayのまま意図した動作になる様に仕様を変更する方向でも考えてみます。
306301
垢版 |
2020/04/29(水) 10:10:44.87ID:eQSMcd5l
3Dから初めて挫折した垢付きみたいなガイジもおるからなぁ
座標の概念はパース定規使ったことがあれば2Dから入ってもすぐ慣れるやろ
あかんかどうかはその人次第やな
垢付きは何をやっても駄目やけどな

UIオブジェクトを複製したらUIキャンバスの外に出て座標めちゃくちゃ
座標いじらずにUIキャンバスに戻したら座標は元に戻るもののスケールが微妙におかしい
なんやその0.99なんちゃらかんちゃらっていうのは
1でええやろ1で
Unityあるあるやで〜
2020/04/29(水) 10:58:11.39ID:Ge+X1sPh
>>298
動かしたりエフェクト出したりするならスプライトでやったほうが多少処理が軽いけど、
canvsはcanvasでレイアウトが楽とかメリットもあるので好きなやり方でいいと思う。

試しに別のやり方で実装してみたりするといろいろ発見があるかと。
308くまじょ
垢版 |
2020/04/29(水) 11:00:28.02ID:2WIq4ayc
>>300
今は家にいないからunity弄れない

ググってみたところ
Undo.RecordObjectとか使えばいいのかなあ
俺の場合は拡張とかわかんないので違う方法[ExecuteinEditMode]だけど
2020/04/29(水) 11:41:46.95ID:gkpKVPrd
visual studio2019でunityのGameobjectとかスニペット使えないんだけど
どうやったら使えますか?
310くまじょ
垢版 |
2020/04/29(水) 12:06:13.32ID:JSWzrUs2
>>293
納得いくものではないが自己解決
プレハブにキャンバス置いてUIのテキスト置いた

そのキャラクタを大量にシーンに置いたから
キャンバスの枠が表示されてうざいのでキャンバスのサイズ0にした

unityだけでなく別のツールでも思ったのだが
UIにできて非UIではできないこと
非UIにできてUIではできないこと
というの不便だなあ
311くまじょ
垢版 |
2020/04/29(水) 12:07:05.31ID:JSWzrUs2
>>308
俺の場合は解決した
まだ十分な確認はしていないがたぶんok
2020/04/29(水) 13:00:17.87ID:7X6Qdfy+
>>310
それぞれの役割があるからしっかり理解して使いこなすしかない
間違って使うから後で困る
マニュアルみて速攻理解する天才エスパーでも無い限り、何度も失敗して理解するしかないかも
313くまじょ
垢版 |
2020/04/29(水) 13:47:14.76ID:JSWzrUs2
キャンバス以外にも文字書きたいんだよおおお
2020/04/29(水) 16:06:48.36ID:RT7RiZcP
>>313
板に文字書いたビットマップ貼ったのじゃだめですか?
315弟子
垢版 |
2020/04/29(水) 16:24:45.75ID:j5yLLvLF
https://docs.unity3d.com/ja/current/ScriptReference/GUI.Label.html
316くまじょ
垢版 |
2020/04/29(水) 20:06:28.79ID:JSWzrUs2
文字の件はプレハブにキャンバス持たせて表示はできたんだけど

たとえばダメージ受けると数字がこぼれ落ちる演出などはどうするんだろう
自キャラ見方キャラ敵キャラに付けたキャンバスにテキストなのだろうか

今回はそういう用途ではない
317くまじょ
垢版 |
2020/04/29(水) 20:09:14.30ID:JSWzrUs2
>>316
俺が今やってるのは2Dなのでカメラの方を向く必要ないからキャンバスである必要ないけど
3Dだとキャンバスの方が楽なのかな
座標とかオーダーとかどうなるのか知らんけど
2020/04/29(水) 21:23:38.47ID:Ge+X1sPh
他の人も書いてるけど
TextMeshProじゃだめなの?

ヒエラルキー右クリ→
3Dオブジェクト→Text-TextMeshPro
319くまじょ
垢版 |
2020/04/29(水) 21:36:38.87ID:JSWzrUs2
俺には使い方わからなかったがそれで可能ならそれが正解なのかな
記憶の片隅に置いておくよ
2020/04/29(水) 21:55:28.30ID:GicUwo7y
プログラム未経験です。
1年を目途にゲーム制作し、1作目でまずは100万の利益を狙いたいと思いますが
何から始めたらいいでしょうか。
2020/04/29(水) 22:03:00.75ID:RT7RiZcP
>>320
初心者向けの本でも買ってチュートリアルやるとかから始めたほうがいいんじゃないですか。
2020/04/29(水) 23:21:03.48ID:IMZ53Uaz
釣りはよそでどうぞ
2020/04/30(木) 00:32:39.07ID:hTGJdOAW
テストプレイ中(UNITYで再生中)に
VisualStudioでコード編集するとテストプレイが一時停止になってしまいます。
前は動作させたままコード編集できたような気がします。(気のせいでしょうか?)
2020/04/30(木) 03:18:23.92ID:uP6BsH0v
はい、気のせいです。
スクロールはできるが、記入した時点でフォーカスがVSになってunityは止まる
2020/04/30(木) 03:33:51.89ID:yZzY0I2t
>>308
Undo.RecordObjectは上手く使えなかったのですが、
それの関連で出てきたプロパティ操作とやらを使ったらできました!
ありがとうございました
326名前は開発中のものです。
垢版 |
2020/04/30(木) 05:33:09.73ID:rTPsa1+b
ユニットをクリックすると移動できる範囲の色を変えるという実装を作ろうとしています。

UIのオブジェクトでマップを作った場合、
マップのタイルにUIのImageをアタッチしてこれを半透明にし、後はON/OFFにすることで表現できるようです。

ところがいまヒエラルキーに画像をドラッグ&ドロップで作り出したオブジェクトをベースにマップを作っているので
このやり方ができません。
半透明のマスクのようなものを上から適用したいのですがやる方法があるでしょうか?
すべてを諦めてマップをUIで実装しなすことも考えています。
327名前は開発中のものです。
垢版 |
2020/04/30(木) 05:55:20.90ID:rTPsa1+b
>>326
自己解決しました。

元のオブジェクトの下に子オブジェクトを追加して、
この子オブジェクトをON/OFFすればできました。
2020/04/30(木) 06:48:03.52ID:XHyCB/e1
UnityでFE風のSRPGを作ってる人のブログを前に見たな
自分が見たときはちょうど行動可能範囲に色をつけたところで終わってた
2020/04/30(木) 11:41:17.32ID:V6Pk2JwW
http://s.kota2.net/1588213392.png

ボタンを押すと5の星だけが表示されるスクリプトなのですが、
親になっている星のオブジェクトをpublicで参照するやり方ではなくて
Findでヒエラルキーから探してくるやり方に変更したら動かなくなりました。


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Button5star : MonoBehaviour//ボタンにアタッチ
{
//public Transform STARParent; //publicで参照するのをやめる
Transform STARParent = GameObject.Find("starParent").GetComponent<Transform>();//Findで探したい

public void button5star()
{
for (int i = 0; i < STARParent.childCount; ++i) // for文
{
STARParent.GetChild(i).gameObject.SetActive(false);//STARParentの子を一旦全部消す
STARParent.transform.Find("star (5)").gameObject.SetActive(true);
}
}
}

-----------------------------
starParentは空のオブジェクトで子のstarは画像のspriteです。
Findで探している部分が間違っているのでしょうか?
2020/04/30(木) 12:26:29.47ID:uP6BsH0v
どう動かなくなるのか…
331329
垢版 |
2020/04/30(木) 12:40:54.07ID:V6Pk2JwW
>>330
ボタンを押しても何も反応しなくなりました。
publicで外部から親を参照していた時はうまく動いていたのですが、
Findで探すようにしたらボタンが反応しなくなった感じです。
2020/04/30(木) 12:44:12.91ID:fCNBU+9B
>>329
というかこれエラー出てない?
Findはメンバー変数の宣言時には使えない。
こうすればいけるはず。

Transform STARParent; // = GameObject.Find("starParent").GetComponent<Transform>();//Findで探したい

void Start()
{
STARParent = GameObject.Find("starParent").GetComponent<Transform>();//Findで探したい
}
2020/04/30(木) 12:44:37.30ID:yZzY0I2t
簡略化してるのかと思ってたけど
もしかしてStart()とかの関数の外でGetComponentしてる?
334329
垢版 |
2020/04/30(木) 13:01:25.70ID:V6Pk2JwW
>>332 333
どうもありがとうございました。
スタート関数の中でGetComponentを書かなくてはいけなかったのが分かっていませんでした。

publicで親を参照していた時はなぜかエラーが出ていなくてボタンも動いていました。
2020/04/30(木) 17:20:43.40ID:sYkR1Hoa
僕もガチ初心者の頃にメソッドの外でGetComponentしようとしたことがありまひた(^^
誰もが通る道なのでふね(^^

ボッキング!(^^
2020/04/30(木) 17:46:57.14ID:Svx3VR2I
昨日screenspace.cameraでのUGUIのドラッグについて質問した者ですが、やっと画面に表示される様になったもののクリックした位置のかなり左にオブジェクトがワープしてしまう様になりました。

もうお手上げです\(^o^)/
2020/04/30(木) 20:54:04.01ID:dWqwrf+A
原因が同じかどうかはともかく

自分もドラッグで位置を変更できるようにしたオブジェクトがわけのわからない挙動になったことがあるわ
既存のSceneを大量にコピーして増やしたうちの一つだけがそうなったから頭を抱えた
結局原因はヒエラルキーに登録したスクリプトのGameObjectにmissingがあることだった
そんなことでも挙動がおかしくなるんだな
2020/04/30(木) 20:54:38.25ID:uP6BsH0v
クリックした時の座標データを表示して、見る。
2020/04/30(木) 21:02:57.29ID:OfoKVMka
質問時にエラーが出てる時は必ず言って欲しいわ
2020/04/30(木) 21:28:21.64ID:Svx3VR2I
ワープ現象は手札置き場パネルのホリゾンタルレイアウトがカードオブジェクトのアンカー?を左上にセットしていたのが原因っぽいです。
ドラッグ開始時に一度コンポーネントをオフにし、アンカーをスクリプトから中心に移動する事で解決しました。

screenspaceの問題についてはRectTransformUtilityを使って座標を変換する事で解決しました。

同じ現象で困る人が後から救われる様に書き残しておきます。
ありがとうございました!

>>339
エラーが出れば自分でも調べられるから楽なんですけどね・・・。
2020/04/30(木) 21:28:31.81ID:dWqwrf+A
そういえば自分の時はコンソールに何かエラーメッセージが出てたな
342名前は開発中のものです。
垢版 |
2020/04/30(木) 21:34:42.74ID:rTPsa1+b
ここで質問していろいろ弄ってわかったことのメモを置いておきます。

【uGUIのImage】と【SpriteRenderer】について
Unityで画像オブジェクトを表示する方法として、uGUIのImageとSpriteRendererの2つがあるようです。
どちらを使っても似たようなことをできるようですが、やり方が多少異なります。

@uGUIのImageを使う場合
uGUIのオブジェクトはヒエラルキーのCanvas以下に置く必要があり、座標系はピクセル(例:-375〜375)。
画像はUI→Imageをオブジェクトにアタッチして設定(あるいは最初からUI→Imageでオブジェクト作成)。
クリックしたときの動作はUI→Buttonをアタッチして設定。

ASpriteRendererを使う場合
画像を直接シーンに、あるいはヒエラルキーに置くとできるのがこのオブジェクト。
座標系は物理距離(例:-2.5〜2.5。他の人のレスによるとメートルを表しているとか)。
またこのオブジェクトをCanvas以下に移動させると座標系がピクセル(例:-375〜375)に変更。
クリックしたときの動作はオブジェクトにColliderをアタッチして、
Rayを飛ばしてColliderに当たったかどうかを判定(というコードを書く)。
(やったことはないですがRayの代わりにEventTriggerを使った方法もあるようです)

実行時には@とAは重なって表示されます。
まだよくわかっていませんが、@の座標系は動作時の環境(スマホの画面サイズ等)に依存するようで、
@とAはずれるかもしれず、その辺りのケアも必要になるかもしれません。
2020/05/01(金) 00:44:39.66ID:YDQCTUGy
UGUIではUIを作りましょうって事なんだろうけど、レイヤーを指定して最前面以外に描画できるだけで初心者にはありがたいのになぁ。
2020/05/01(金) 20:23:56.53ID:HXkpQ0jK
おすすめのアセット教えてください(´・ω・`)
2020/05/01(金) 20:37:55.42ID:KuaWU/nQ
何が欲しいねん2Dキャラ欲しいのにSE集いらないやろ
2020/05/01(金) 22:22:08.05ID:YDQCTUGy
>>344
セール終わったばっかりじゃん!
初参戦でdotweenとeasysaveとSE集3個買いました。
2020/05/02(土) 00:55:55.47ID:d/s8ZDya
宴を買ったけど今すぐ使いたいのはダイヤローグシステムの方だった
次のセールでも半額になっていますように
2020/05/02(土) 01:17:02.21ID:z//Ej8ZX
>>344
このブログでも見たら?
http://www.asset-sale.net/

都市ジェネレーターくっそ楽しそう
349名前は開発中のものです。
垢版 |
2020/05/02(土) 04:48:49.83ID:qMjLJQ/3
>>346
DOTweenは無料のようですが
DOTween Proを買ったのでしょうか?
セールが終わったばかりとは残念なことです。
350名前は開発中のものです。
垢版 |
2020/05/02(土) 04:58:59.91ID:qMjLJQ/3
>>344
最近買った本にオススメアセットが乗っていました。

Playmaker($65):プログラミング補助ツール
DOTween(無料):オブジェクトアニメーション
Easy Save The Complete Save & Load Tool for Unity ($24.99):セーブやロード実装
Anti Cheat Tool Kit($50):チート対策
UniRx - Reactive Extensions for Unity(無料):コルーチン等非同期処理ライブラリ
JSON .Net For Unity(無料):オブジェクト&#8596;Jsonの変換ライブラリ
Lean Touch(無料):タッチパネル操作
宴3 Unity Text Adventure Game Engine Version3($80):ノベルゲームエンジン
Fungus(無料):ノベルゲームエンジン(ノベルがメインじゃないゲーム用)
Camera Filter Pack($15):カメラエフェクト
Unity Particle Pack(無料):公式エフェクトサンプル
6000+ Flat Buttons Icons Pack($5.99):アイコンやボタンのデザインアセット
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況