回答編集履歴
2
追記
answer
CHANGED
@@ -1,1 +1,42 @@
|
|
1
|
-
右クリックでメニューを開いたタイミングにフラグを追加し、オブジェクト選択の方でメニュー開のフラグが立っている際は処理が通らないようにしてはどうでしょうか?
|
1
|
+
右クリックでメニューを開いたタイミングにフラグを追加し、オブジェクト選択の方でメニュー開のフラグが立っている際は処理が通らないようにしてはどうでしょうか?
|
2
|
+
|
3
|
+
以下追記 06/08
|
4
|
+
ひとまずmainMenu.csに対して以下を追記。内容としては先述したメニューを開いているかどうかのフラグを追加、メニュー開時にフラグをTrueにする処理を追記します。
|
5
|
+
```cs
|
6
|
+
public class mainMenu : MonoBehaviour
|
7
|
+
{
|
8
|
+
public bool CheckMenuStatus;
|
9
|
+
void Start()
|
10
|
+
{
|
11
|
+
CheckMenuStatus = false;
|
12
|
+
}
|
13
|
+
void ShowAtMousePosition()
|
14
|
+
{
|
15
|
+
CheckMenuStatus = true;
|
16
|
+
}
|
17
|
+
}
|
18
|
+
```
|
19
|
+
|
20
|
+
あと、恐らく同じmainMenu.cs内にメニューを閉じる処理があると思うので、そちらのメソッド内に`CheckMenuStatus = false;`と追記してください。これでメニューが開いたときはTrue、開いていない時はFalseの状態となります。
|
21
|
+
|
22
|
+
この上でオブジェクトドラッグのスクリプト内に「CheckMenuStatusがTrueでない時のみオブジェクト操作可能」とします。なので、
|
23
|
+
|
24
|
+
```cs
|
25
|
+
public mainMenu MenuCS; //mainMenu.csを取得するための変数
|
26
|
+
|
27
|
+
if(MenuCS.CheckMenuStatus != true)//CheckMenuStatusがTrueでない時のみ以下の処理を実行する
|
28
|
+
{
|
29
|
+
Vector3 objectPointInScreen
|
30
|
+
= Camera.main.WorldToScreenPoint(this.transform.position);
|
31
|
+
|
32
|
+
Vector3 mousePointInScreen
|
33
|
+
= new Vector3(Input.mousePosition.x,
|
34
|
+
Input.mousePosition.y,
|
35
|
+
objectPointInScreen.z);
|
36
|
+
|
37
|
+
Vector3 mousePointInWorld = Camera.main.ScreenToWorldPoint(mousePointInScreen);
|
38
|
+
mousePointInWorld.z = this.transform.position.z;
|
39
|
+
this.transform.position = mousePointInWorld;
|
40
|
+
}
|
41
|
+
```
|
42
|
+
とすれば恐らくメニューが開いている時にオブジェクトとメニューが重なっていても、オブジェクトは選択できないようになっているはずです。
|
1
誤字
answer
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
右クリックでメニューを開いたタイミング
|
1
|
+
右クリックでメニューを開いたタイミングにフラグを追加し、オブジェクト選択の方でメニュー開のフラグが立っている際は処理が通らないようにしてはどうでしょうか?
|