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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Unity

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

Q&A

解決済

2回答

3100閲覧

exeファイル実行時のクラッシュについて

kou_

総合スコア8

Unity

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

0グッド

0クリップ

投稿2018/03/02 16:04

編集2018/03/03 02:08

前提・実現したいこと

Unityで3Dゲーム制作の勉強がしたいと思い、試しにキー入力に対応した方向にオブジェクトが移動する
プログラムを作ろうとしました。
しかし、以下の内容の通り、作られたexeファイルを実行時にクラッシュしてしまうのでクラッシュが
起きないようにしたいです。

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

ビルドまでは成功しているようなのですが、exeファイルを実行した時にクラッシュし
エラーログ内に以下のようなアクセス違反らしきメッセージが出ていました。

Read from location xxxxxxxx caused an access violation.

該当のソースコード

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class script1 : MonoBehaviour { 6 7 // Use this for initialization 8 void Start () { 9 10 } 11 12 // Update is called once per frame 13 void Update () { 14 transform.Rotate (new Vector3(1f, 1f, 0f)); 15 16 Vector3 v = transform.position; 17 18 float x = Input.GetAxis ("Horizontal"); 19 float z = Input.GetAxis ("Vertical"); 20 v.x += x; 21 v.z += z; 22 transform.position = v; 23 } 24} 25

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

OS: Windows10
Unityのバージョン: 2017.3.1f1 Personal

(追記)Unityのコンソールとexeファイル実行時に生成されるエラーログ

以下がUnityコンソールに表示されていた内容です。(全部で5つありました)

Assets/Standard Assets/Utility/SimpleActivatorMenu.cs(10,16): warning CS0618: `UnityEngine.GUIText' is obsolete: `This component is part of the legacy UI system and will be removed in a future release.' Assets/Standard Assets/Utility/ForcedReset.cs(6,27): warning CS0618: `UnityEngine.GUITexture' is obsolete: `This component is part of the legacy UI system and will be removed in a future release.' Build completed with a result of 'Succeeded' UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) Assets/Standard Assets/Utility/SimpleActivatorMenu.cs(10,16): warning CS0618: `UnityEngine.GUIText' is obsolete: `This component is part of the legacy UI system and will be removed in a future release.' Assets/Standard Assets/Utility/ForcedReset.cs(6,27): warning CS0618: `UnityEngine.GUITexture' is obsolete: `This component is part of the legacy UI system and will be removed in a future release.'

以下がexeファイルを実行した時に生成されているerror.logの内容です。

UnityPlayer.dll caused an Access Violation (0xc0000005) in module UnityPlayer.dll at 0033:657fdd3f. Error occurred at 2018-03-03_103302. C:\Users\OWNER\Documents\HelloProject\Cube.exe, run by OWNER. 56% memory in use. 8118 MB physical memory [3572 MB free]. 16310 MB paging file [10971 MB free]. 134217728 MB user address space [134217157 MB free]. Read from location 00000020 caused an access violation. Context: RDI: 0xffffffff RSI: 0x00000000 RAX: 0x00000000 RBX: 0x32823b80 RCX: 0x00000000 RDX: 0xffffffff RIP: 0x657fdd3f RBP: 0x6a6fef70 SegCs: 0x00000033 EFlags: 0x00010246 RSP: 0x6a6fee68 SegSs: 0x0000002b R8: 0x00000000 R9: 0x00000001 R10: 0x00000000 R11: 0x00000246 R12: 0x00000000 R13: 0x00000001 R14: 0x00000001 R15: 0x00000110 Bytes at CS:EIP: 41 8b 48 20 41 8b 40 18 8d 04 48 41 8b 48 24 99 Stack: 0x6a6fee68: 657fb672 00007ffa 00000000 00000000 r..e............ (省略) Module 1 C:\Program Files\Bonjour\mdnsNSP.dll Image Base: 0x55290000 Image Size: 0x00026000 File Size: 133392 File Time: 2015-08-12_160342 Version: Company: Apple Inc. Product: Bonjour FileDesc: Bonjour Namespace Provider FileVer: 3.1.0.1 ProdVer: 3.1.0.1 == [end of error.log] ==

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

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

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

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

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

Bongo

2018/03/03 01:23

Unityのexeがクラッシュした:アクセス違反(0xC0000005) - Qiita (https://qiita.com/consolesoup/items/9b4878ae355fc274b31f )によると、「(アプリケーション名)_Data」フォルダ内に手がかりになる情報が出力されているかもしれません。もしあれば、それらもご提示いただくと回答者の方々もアドバイスしやすくなるかと思います。
kou_

2018/03/03 02:25

アドバイスありがとうございます。「(アプリケーション名)_Data」のフォルダの中には、3つのフォルダ(Managed、Mono、Resources)と8つのファイル(app.info、boot.config、globalgamemanagers、globalgamemanagers.assets、level0、level0.resS、sharedassets0.assets、sharedassets0.assets.resS)がありました。
Bongo

2018/03/03 06:01

ご提示いただいたエラーログについて何か似た事例がないか検索してみたものの、「グラフィックスドライバの設定を変えたら治った」といったようなケースがあるようですが、いまいちこれだと思えるような明確な原因の事例は出てきませんでした...クラッシュするのは起動直後か、または画面解像度などのコンフィグ画面で「Play!」を押した後か、あるいはゲームが開始した後のどこかの時点か、のいずれでしょうか?もし後者2つのどちらかなら、もしかするとご質問者さんのコードのどこかに原因があるのかもしれませんが(とはいえ、大抵はビルド失敗により誤りの存在が検出されるはずなので、今回のようなビルドを通ってしまうケースはまれなように思いますが...)前者のケースだとコード修正ではどうにもならない、Unity Technologiesに不具合報告した方がいいようなケースかもしれませんね。「新規プロジェクトを作るところから始めて、こういう手順を経てビルドし、出来上がったプログラムを実行するとクラッシュする」といった再現手順は突き止められそうでしょうか?また、他に手がかりになりそうなものとして、C:\Users\(ユーザー名)\AppData\LocalLow\(会社名)\(アプリケーション名)\output_log.txtを見てみるのはどうでしょう。
kou_

2018/03/03 17:23 編集

繰り返しアドバイスをありがとうございます。クラッシュするのは生成されたexeファイルを起動した直後で、コンフィグのウィンドウが出ることもないままクラッシュしてしまいますので、教えていただいた前者のUnity Technologiesに報告した方が良いケースになるでしょうか?また、新規プロジェクトを作ってからどのような手順でビルドまで至ったかの再現手順は事細かに説明は可能です。最後に、他の手掛かりとしてのテキストファイルですが、「LocalLow」フォルダまでは至ったのですが、その後の(会社名)というのが良く分かりませんでした…。「LocalLow」フォルダ直下に「Unity」フォルダを見つけることはできたのですがその中に(アプリケーション名)のフォルダは存在しなかったので、output_log.txtファイルは見つけられませんでした。  以下、追記させていただきますが、手元にある資料をもとにこのプロジェクトおよびソースコードを 作っていて、その資料が少々古くUnity 5.5バージョンにてサンプルを作っている、と資料に書いてあったので試しにUnity 5.5をインストールしてみてそちらで全く同じ手順でプロジェクトの作成、ビルドと実行まで行ってみた結果、クラッシュも起こらずきちんとプログラムも動作しました。  この結果から見てUnity 2017.3.1f1バージョンのバグということなのでしょうか。
Bongo

2018/03/04 03:35

ログファイルが見つかりませんでしたか?2017.3だとhttps://docs.unity3d.com/2017.3/Documentation/Manual/LogFiles.htmlにある位置に出力されるそうですが、https://docs.unity3d.com/2017.3/Documentation/Manual/class-PlayerSettingsStandalone.htmlの「Use Player Log」がオフだと出力されないようです。それよりも5.5で問題なかったというのが気になりますね。ぜひ再現手順を知りたいですが、全部事細かに記載すると長くなってしまうでしょうから、まずは概要で構わないかと思います。特にプレイヤー設定あたりをデフォルトから変えている箇所があれば重要そうな気がします。不具合報告するにしても、まずはもっと原因を絞り込んでからになるでしょう。
kou_

2018/03/04 06:36 編集

ログファイルですが、改めて探してみたところ見つかりました。ファイルの中の「OUTPUTING STACK TRACE」という部分に'無効なアドレスにアクセスしようとしています'という出力がありました。 なお、再現手順の概要ですが、プロジェクトを立ち上げた後に以下の手順を踏んだ後にビルドし、出来上がったプログラムを実行しました。 1.Cubeオブジェクトを生成し、y座標を1にする。 2.もう一つCubeオブジェクトを生成しy座標を-0.5、Scaleのx座標、z座標を共に100とする。 3.質問に記載のソースコードをスクリプトとして生成し、1.のオブジェクトに組み込む。 なお、プレイヤー設定などの細かな設定は変更はしておりません。
guest

回答2

0

ベストアンサー

特殊なことはしていないご様子で、これでクラッシュするとは考えにくいと思いつつ再現手順を試してみましたが、私の環境ではクラッシュせず、ちゃんと起動してしまいました(コンフィグウィンドウが表示され、「Play!」クリックでゲームがスタートし、ゆっくり回るキューブが現れてキーボード操作で前後左右に移動しました)...
使ったUnityは2017.3.1f1、ビルド・実行したOSは64ビット版Windows 10 Homeバージョン1709、関係あるか不確かですがプロセッサはIntel Core i3-4030U 1.90GHz、グラフィックスはIntel HD Graphics 4400です。
ご提示のメッセージですとStandard AssetsのUtilityをインポートしているご様子だったため、インポートしてビルドしても正しく動作しました。申し訳ないですが結局再現できず原因特定まで進めませんでした。

まっさらなプロジェクトを新規作成して、それをそのままビルドしてもクラッシュしてしまうでしょうか?もしどのプロジェクトをビルドしてもクラッシュしてしまうようなら、ご質問者さんの環境特有のトラブルか、あるいはUnityのインストール時に何か問題があったのかもしれません。
Unityをインストールし直してみて、それでも同じ手順でクラッシュするようなら、Unity Technologiesに相談してみるのが良さそうな気がします(私は利用したことがなく、いまいち勝手が分かりませんが、無料サポートへようこそ ― ユニティ・テクノロジーズ・ジャパン合同会社から問い合わせできるようです)。

投稿2018/03/06 20:50

編集2018/03/07 02:30
Bongo

総合スコア10807

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

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

kou_

2018/03/07 07:59

ご回答ありがとうございます。 Unity2017.3.1f1バージョンをもう一度インストールしなおして同様の手順を踏んでビルド、実行 まで行ってみたところ、正常にコンフィグウィンドウが表示され、Play!ボタンを押下後も正常に プログラムが作動しました。 詳細に何が問題だったのか不明なまま解決してしまいましたが、インストールされた状態に何か 問題があったのだろうと思います。 長期にわたりお助けいただきありがとうございました。
guest

0

そのプログラムをデバッガで動かした場合、どの行でクラッシュが起きますか?

おそらく、あなたが提示したソースはクラッシュの原因ではないです

投稿2018/03/02 23:29

y_waiwai

総合スコア87774

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

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

kou_

2018/03/03 02:13

ご回答ありがとうございます。 生成されたプログラムを動かしたときにどの行でクラッシュが起きるかというのが 分からなかったのでUnityのコンソール内に表示されていたメッセージと プログラムを動かしたときに生成されたerror.logの内容を追記させていただきました。 お手数おかけしますがよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問