質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1771閲覧

Unity 5.6: Sliderを参照したい

Nippun

総合スコア1147

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2017/06/16 14:57

ユーザーのHPを表示するのにSliderをつかっているのですがプレハブからでた敵がDestroyした時にユーザーのHPをへらしたいのですがうまくいきません。

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class HP : MonoBehaviour { public Slider slider; private float life = 10.0f; void Start () { } void Update () { } public void HPChange(float value){ slider.value = life - value; life -= value; } } コード
using System.Collections; using System.Collections.Generic; using UnityEngine; public class a : MonoBehaviour { public HP hp; private float speedChangeTime = 0.0f; public GameObject b; void Update () { speedChangeTime += Time.deltaTime; if (speedChangeTime > 7.5f) { Destroy (this.gameObject); hp.HPChange (2.0f); } } コード プレハブにアタッチ

the the game object 'Slider' is inactive!というのがhp.HPChange (2.0f);にときに出てしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Bongo

2017/06/16 22:56 編集

一応確認しますが、スライダーのアクティブ・非アクティブ切り替えチェックボックス(インスペクタ上のオブジェクト名の左隣)はオンになっているでしょうか?
Nippun

2017/06/17 00:17

なっています。そもそもプレハブにsliderを加えることができません。
guest

回答1

0

ベストアンサー

う〜ん、次のような条件で試したのですが、これだとちゃんとスライダーが減るんですよね...
多分ご質問者さんと条件が異なるためかと思いますが、ご質問者さんの場合はどのような条件でしょうか?

  • Sliderを追加、Max Valueを10に設定
  • Sphereを追加(ユーザーのつもり)、HPをアタッチ、HPのSliderを追加したスライダーに設定、プレハブ化はしない
  • Cubeを追加(敵のつもり)、a(待ち時間短縮のため7.5秒を2.0秒に変更)をアタッチしてプレハブ化、画面上のCubeは削除
  • Cylinderを追加(敵発生器のつもり)、スクリプトをアタッチし、スクリプトで1秒後にCubeを生成するとともにCubeのhpにSphereのHPをセット

###敵発生器のスクリプト

C#

1using UnityEngine; 2 3public class CubeSpawner : MonoBehaviour 4{ 5 6 public GameObject CubePrefab; 7 8 private GameObject cubeInstance; 9 10 private float time = 0.0f; 11 12 void Start() 13 { 14 15 } 16 17 void Update() 18 { 19 if (cubeInstance != null) 20 { 21 return; 22 } 23 24 if (time <= 1.0f) 25 { 26 time += Time.deltaTime; 27 } 28 else 29 { 30 time = 0.0f; 31 cubeInstance = Instantiate( 32 CubePrefab, 33 transform.position + new Vector3(-2.5f, 0.0f, 0.0f), 34 Quaternion.identity); 35 cubeInstance.GetComponent<a>().hp = GameObject.Find("Sphere").GetComponent<HP>(); 36 } 37 } 38}

###プレイモードの様子
プレイモードの様子

投稿2017/06/17 02:25

Bongo

総合スコア10807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Nippun

2017/06/17 06:36

なんで自分のがうまく動かないかわからないですね。 もしかしたら見逃しているなにかがあるのかもしれません。 もう少し調べて見ます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問