Unity3dを介して新しいc#スクリプトを追加するときにVS soution Explorerを強制的に再読み込みしますか?


8

私はC#スクリプトを作成する(ときCreate -> C# Script)を介しUnity3d やからそれを削除Unity3d- Visual Studioショー私の警告ウィンドウ。

ここに画像の説明を入力してください

気に障る。

ウィンドウなしでソリューションエクスプローラーで「ReloadAll」を強制する方法はありますか?

回答:


3

だから、私たちが持っているもの。

からの開発者は、それが彼らの最も投票された機能リクエストの一つであるVS Tools for Unity team と述べました。そして驚くべきことに、修正するのは簡単ではありません。彼らはそれに取り組んでいます。

しかし、私は使用できるスクリプトをいくつか見つけました。ロシアの団結コミュニティでそれを見つけました。

DbIMokに感謝します。また、彼は昨日このスクリプトをforum.unity3d.comに投稿しました。

asという名前のC#スクリプトを作成FileModDialogCloser.csし、それをEditorフォルダーに配置する必要があります。これがコードです:

using System;
using System.Runtime.InteropServices;
using UnityEditor;

[InitializeOnLoad]
public class FileModDialogCloser {

        [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
        static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);

        [DllImport("user32.dll")]
        static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

        [DllImport("user32.dll")]
        static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);

        const string search = "File Modification Detected";
        static IntPtr hwnd;

        static void Check() { 
                hwnd = FindWindowByCaption(IntPtr.Zero, search);
                if ((int)hwnd != 0) {
                        ShowWindow(hwnd, 5);
                        keybd_event(0x0D, 0, 0, 0);
                }
        }

        static FileModDialogCloser() {
                EditorApplication.update += Check;
        }
}

不思議!

Unityを介してC#スクリプトを作成および削除するために機能します。

ご覧のとおり、コードには行がありkeybd_event(0x0D, 0, 0, 0);ます。これはEnterボタンを押すことをシミュレートしたものです。そして、それはリロードの実現を意味します。ReloadAllが必要な場合は、次のようにする必要があります。

keybd_event(0x09, 0, 0, 0);
keybd_event(0x0D, 0, 0, 0);

これはボタンをTab押すことですEnter

SMALL FAULT:スクリプトを作成または削除する場合:ウィンドウが開いていることを確認して実行しkeybd_event、ウィンドウが閉じます。これは非常に高速に行われるため、ボタンをクリックする必要はありません。とにかく、このウィンドウは数ミリ秒で表示されます。今のところ、これを行うにはこれ以上の方法はありません。


さらに:

でUnityプロジェクト用の C#スクリプト(単純なC#スクリプトだけでなく)作成できますVisual StudioUnity確認ウィンドウなしでファイルが自動的に追加されます。

最初の方法(簡単)

私が正しく理解している場合:あなたが使用しているときVisual Studio Tools for Unity-そのツールはUnity C#スクリプトを作成するためのテンプレートをすでにに統合していVSます。ソリューションを右クリックして、を選択しAdd -> NewItemます。Unityの2つのテンプレートが表示されます。

введитесюдаописаниеизображения

введитесюдаописаниеизображения

しかし、これらのテンプレートは、不要な情報が多く含ま例えば、コメントすることができます// Use this for initialization// Update is called once per frameなどと、コメントに@wondraとして言った、あなたはユニティ・スクリプトの独自のカスタム項目テンプレートを追加することができます。

2番目の方法

  • どこからでもファイルを作成できます。

введитесюдаописаниеизображения

  • 好きなものを追加するか、smthを削除します。または例:

введитесюдаописаниеизображения

  • クリック File -> ExportTemplate

    введитесюдаописаниеизображения

  • 選ぶ ItemTemlate

введитесюдаописаниеизображения

  • リストでテンプレートを確認してください

введитесюдаописаниеизображения

  • をクリックNextしますNext
  • テンプレートの名前と説明を設定し、クリックします Finish

введитесюдаописаниеизображения

  • テンプレートは、c:\Users\YOUR_PROFILE\Documents\Visual Studio 2015\My Exported Templates\フォルダにも追加されますc:\Users\YOUR_PROFILE\Documents\Visual Studio 2015\Templates\ItemTemplates\VS再起動後、このテンプレートがテンプレートとしてリストに表示されVS Tools for Unityます。

введитесюдаописаниеизображения

こちらが動画解説です。


ハッピーエンド!


0

Unityの目的のディレクトリのVisual Studioに新しいスクリプトを直接追加できます。その場合、リロードする必要はありません。 ここに画像の説明を入力してください

しかし、あなたは何か他のことをしなければならないでしょう。Visual Studioの新しいスクリプトには、デフォルトを使用する名前空間がいくつかあります。それらを変更または削除できます。using UnityEngine;Unity関連の権限を取得するには、最初に追加する必要があります。追加するvoid Start()void Update()、必要に応じて自分で追加する必要があります。新しいクラスは次のようになります。 ここに画像の説明を入力してください


1
ありがとう、私はそれを知っています。しかし、Unity内でスクリプトを作成/削除したい場合があります
Alexey Shimansky

1
UnityEngineまたはstart()/ stop()を使用して手動で追加する必要はありません。Unity スクリプト用に独自のカスタムアイテムテンプレートを追加できます。
ワンドラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.