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

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

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

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

Unity3D

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

Q&A

解決済

2回答

1590閲覧

UnityでDebug.Logをつかっても何も表示されない...

fuma20020214

総合スコア13

C#

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

Unity3D

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

0グッド

0クリップ

投稿2018/10/28 03:03

前提・実現したいこと

ML-Agentsを使って大富豪の簡単なAIをつくるために、
まずUnityで大富豪を動かしたい

発生している問題・エラーメッセージ

エラーメッセージは出ていないのですが、
Consoleに何も表示されません。

該当のソースコード

言語はc#でUnityは2017.2.3f1です。
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

public class DD : MonoBehaviour
{

//カード管理クラス class CardManage { public int iCardCount = 5; // カードの枚数 public int iCardNumber = 9; // カードの最高数字 public ArrayList iMyCardArray = new ArrayList(); // プレイヤーの手持ちカードを格納する public ArrayList iCpuCardArray = new ArrayList(); // CPUの手持ちカードを格納する public int iMySelect; // プレイヤーが選択したカード番号を格納する public int iCpuSelect; // CPUが選択したカード番号を格納する public int iMyLast = 0; // プレイヤーが最後に出したカードを格納する public int iCpuLast = 0; // CPUが最後に出したカードを格納する public bool blPass = false; // パス判定用 public bool blInput = false; // プレイヤー入力用 public String strInput; // プレイヤー入力用 } // 大富豪クラス class Daifugo : CardManage { private readonly int iMyselect; // プレイヤーのカードを配布するメソッド public void myStart() { // 乱数生成用にコンストラクタ生成 System.Random rd = new System.Random(); Debug.Log("大富豪をスタートします。");

試したこと

エラーメッセージがないのでなんとも...

補足情報(FW/ツールのバージョンなど)

恐らくそもそもDebug.Logのところまでプログラムが動いてないと思うのですが、
どこで止まっているのでしょうか?
UnityのConsoleのClear on Playとか書いてるところの設定はネットで調べて変えてあります。
ML-Agentsの方は昨日勉強し終わったので後は大富豪のプログラムを組み込むだけになってます。
初めての質問で、プログラミングもロボットのためにしか勉強してこなかったので超初心者なので、おかしなところを間違えているかもしれませんがビシバシ指摘していただけたら幸いです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

横から失礼します。

やって見たのですが動きませんでした。
一番最初にvoid Start()を作ってそこにDebug.Logを入れたら当然動いたのですが…

とのことですが、以下のようになっているのではないでしょうか?

C#

1public class DD : MonoBehaviour 2{ 3 // ※ここにStart()を入れると動く 4 void Start() 5 { 6 Debug.Log("foo"); 7 } 8 9 // …(中略) 10 11 // 大富豪クラス 12 class Daifugo : CardManage 13 { 14 private readonly int iMyselect; 15 16 // ※これをStart()にしても動かない 17 public void myStart() 18 { 19 20 // 乱数生成用にコンストラクタ生成 21 System.Random rd = new System.Random(); 22 23 Debug.Log("大富豪をスタートします。"); 24 } 25 } 26}

この場合、DDはMonoBehaviourを継承していますが、DaifugoはMonoBehaviourを継承していません。
Start()はMonoBehaviourの機能なので、DDの中にあるStart()は動作しますが、Daifugoの中にあるStart()は動作しません。

DDのStart()からDaifugoのmyStart()を呼び出すのはどうでしょうか。

投稿2018/10/28 07:42

fiveHundred

総合スコア9774

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

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

fuma20020214

2018/10/28 11:14

DDの{}←このかっこが一番下で終わっていても、下の方までこのDDと同じ物を引き継いでいるというわけではないということでしょうか? StartからmyStartを呼び出す、というのはそういうコマンドをStart の中に書くということであっているでしょうか?
fiveHundred

2018/10/28 12:08

> DDの{}←このかっこが一番下で終わっていても、下の方までこのDDと同じ物を引き継いでいるというわけではないということでしょうか? この場合、DaifugoはあくまでDDの中にあるということだけで、DaifugoもMonoBehaviourを継承しているというわけではありません。 > StartからmyStartを呼び出す、というのはそういうコマンドをStart の中に書くということであっているでしょうか? それで大体合ってます。 ただし、この時点ではDaifugoはインスタンス化されていないはずなので、それも行う必要があると思います。
guest

0

myStartではなく、Startとすれば動きますよ。たぶん。

投稿2018/10/28 03:46

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

fuma20020214

2018/10/28 06:35

やって見たのですが動きませんでした。 一番最初にvoid Start()を作ってそこにDebug.Logを入れたら当然動いたのですが… どうか別のアプローチをご教授ください
退会済みユーザー

退会済みユーザー

2018/10/28 06:43

エラーが出ていないのであれば、myStartがどこからも呼ばれていないのが原因かと思います。 何かしらのIDEを使ってるかと思いますが、メソッドの呼び出し元を検索する機能があると思うので、それを使って探してみてください。たとえばVisualStudioであれば、メソッドにカーソルを当てた状態で、Shift+F12かなにかで、検索できたはずです。
fuma20020214

2018/10/28 11:16

ちょうど自分はVisual Studioでやっているので、家に着いたらやってみます。 丁寧に教えてくださりありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問