Skip to content

Commit e86630c

Browse files
committed
feat: Update comments and readme
1 parent f3e5840 commit e86630c

File tree

11 files changed

+86
-31
lines changed

11 files changed

+86
-31
lines changed
4.71 KB
Loading
48.6 KB
Loading
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
namespace GBG.EditorMessages.Editor
88
{
9-
public static class ResCache
9+
public static class EditorMessageUtility
1010
{
1111
//private static Font _monospaceFont;
1212
private static FontAsset _monospaceFontAsset;

Editor/MessageBanner.cs

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,13 @@ public bool ShowMessageTypeCount
4040
public MessageBanner(object source, string sourceName, bool showMessageTypeCount = true)
4141
: this(null, source, sourceName, showMessageTypeCount) { }
4242

43+
/// <summary>
44+
/// 消息横幅。
45+
/// </summary>
46+
/// <param name="messages">消息列表。</param>
47+
/// <param name="source">调用源。双击横幅时,作为打开的消息查看器的调用源。</param>
48+
/// <param name="sourceName">调用源的名字。</param>
49+
/// <param name="showMessageTypeCount">是否显示各类型消息的计数。</param>
4350
public MessageBanner(IList<Message> messages, object source, string sourceName,
4451
bool showMessageTypeCount = true)
4552
{
@@ -78,8 +85,9 @@ public MessageBanner(IList<Message> messages, object source, string sourceName,
7885
marginRight = 2,
7986
minWidth = 100,
8087
overflow = Overflow.Hidden,
88+
textOverflow = TextOverflow.Ellipsis,
8189
unityTextAlign = TextAnchor.MiddleLeft,
82-
unityFontDefinition = new StyleFontDefinition(ResCache.GetMonospaceFontAsset()),
90+
unityFontDefinition = new StyleFontDefinition(EditorMessageUtility.GetMonospaceFontAsset()),
8391
//transitionDuration = new List<TimeValue>
8492
//{
8593
// new TimeValue(_messageContentTransitionDuration, TimeUnit.Millisecond)
@@ -96,19 +104,19 @@ public MessageBanner(IList<Message> messages, object source, string sourceName,
96104
};
97105
Add(ContentLabel);
98106

99-
InfoTypeImage = CreateMessageTypeImage(ResCache.GetInfoIcon(true), iconSize);
107+
InfoTypeImage = CreateMessageTypeImage(EditorMessageUtility.GetInfoIcon(true), iconSize);
100108
Add(InfoTypeImage);
101109

102110
InfoCountLabel = CreateMessageTypeCountLabel();
103111
Add(InfoCountLabel);
104112

105-
WarningTypeImage = CreateMessageTypeImage(ResCache.GetWarningIcon(true), iconSize);
113+
WarningTypeImage = CreateMessageTypeImage(EditorMessageUtility.GetWarningIcon(true), iconSize);
106114
Add(WarningTypeImage);
107115

108116
WarningCountLabel = CreateMessageTypeCountLabel();
109117
Add(WarningCountLabel);
110118

111-
ErrorTypeImage = CreateMessageTypeImage(ResCache.GetErrorIcon(true), iconSize);
119+
ErrorTypeImage = CreateMessageTypeImage(EditorMessageUtility.GetErrorIcon(true), iconSize);
112120
Add(ErrorTypeImage);
113121

114122
ErrorCountLabel = CreateMessageTypeCountLabel();
@@ -153,7 +161,7 @@ private Label CreateMessageTypeCountLabel()
153161
paddingRight = 0,
154162
overflow = Overflow.Hidden,
155163
unityTextAlign = TextAnchor.MiddleCenter,
156-
unityFontDefinition = new StyleFontDefinition(ResCache.GetMonospaceFontAsset()),
164+
unityFontDefinition = new StyleFontDefinition(EditorMessageUtility.GetMonospaceFontAsset()),
157165
}
158166
};
159167
return label;
@@ -182,7 +190,7 @@ public void Refresh()
182190

183191
private void SetMessage(Message message)
184192
{
185-
TypeImage.image = message != null ? ResCache.GetMessageTypeIcon(message.Type) : null;
193+
TypeImage.image = message != null ? EditorMessageUtility.GetMessageTypeIcon(message.Type) : null;
186194
ContentLabel.text = message?.Content;
187195
ContentLabel.tooltip = message?.Content;
188196
}
@@ -195,15 +203,15 @@ private void SetMessageCount(MessageType messageType, int count)
195203
{
196204
case MessageType.Info:
197205
InfoCountLabel.text = text;
198-
InfoTypeImage.image = ResCache.GetInfoIcon(inactive);
206+
InfoTypeImage.image = EditorMessageUtility.GetInfoIcon(inactive);
199207
break;
200208
case MessageType.Warning:
201209
WarningCountLabel.text = text;
202-
WarningTypeImage.image = ResCache.GetWarningIcon(inactive);
210+
WarningTypeImage.image = EditorMessageUtility.GetWarningIcon(inactive);
203211
break;
204212
case MessageType.Error:
205213
ErrorCountLabel.text = text;
206-
ErrorTypeImage.image = ResCache.GetErrorIcon(inactive);
214+
ErrorTypeImage.image = EditorMessageUtility.GetErrorIcon(inactive);
207215
break;
208216
default:
209217
throw new ArgumentOutOfRangeException(nameof(messageType), messageType, null);
@@ -242,7 +250,7 @@ private void OnContextClick(ContextClickEvent evt)
242250

243251
#region Message Transition
244252

245-
private uint _messageSwitchInterval = 3000;
253+
private uint _messageSwitchInterval;
246254
/// <summary>
247255
/// 消息轮播时的切换间隔(毫秒)。
248256
/// 若为0,则不自动切换消息。

Editor/MessageElement.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public MessageElement()
4242
marginRight = 2,
4343
overflow = Overflow.Hidden,
4444
unityTextAlign = TextAnchor.MiddleRight,
45-
unityFontDefinition = new StyleFontDefinition(ResCache.GetMonospaceFontAsset()),
45+
unityFontDefinition = new StyleFontDefinition(EditorMessageUtility.GetMonospaceFontAsset()),
4646
}
4747
};
4848
Add(LineNumberLabel);
@@ -66,7 +66,7 @@ public MessageElement()
6666
{
6767
paddingRight = 0,
6868
unityTextAlign = TextAnchor.MiddleCenter,
69-
unityFontDefinition = new StyleFontDefinition(ResCache.GetMonospaceFontAsset()),
69+
unityFontDefinition = new StyleFontDefinition(EditorMessageUtility.GetMonospaceFontAsset()),
7070
}
7171
};
7272
Add(TimestampLabel);
@@ -91,8 +91,9 @@ public MessageElement()
9191
flexGrow = 1,
9292
flexShrink = 1,
9393
overflow = Overflow.Hidden,
94+
textOverflow = TextOverflow.Ellipsis,
9495
unityTextAlign = TextAnchor.MiddleLeft,
95-
unityFontDefinition = new StyleFontDefinition(ResCache.GetMonospaceFontAsset()),
96+
unityFontDefinition = new StyleFontDefinition(EditorMessageUtility.GetMonospaceFontAsset()),
9697
}
9798
};
9899
Add(ContentLabel);
@@ -136,7 +137,7 @@ public void SetMessage(Message message, int lineNumber, int lineNumberLabelWidth
136137
Message = message;
137138
LineNumber = lineNumber;
138139
LineNumberLabelWidth = lineNumberLabelWidth;
139-
TypeImage.image = ResCache.GetMessageTypeIcon(message.Type);
140+
TypeImage.image = EditorMessageUtility.GetMessageTypeIcon(message.Type);
140141
ContentLabel.text = message.Content;
141142

142143
UpdateLineNumberLabel();
@@ -180,7 +181,7 @@ private void UpdateContextImage()
180181
return;
181182
}
182183

183-
ContextImage.image = ResCache.GetContextIcon();
184+
ContextImage.image = EditorMessageUtility.GetContextIcon();
184185
ContextImage.style.display = DisplayStyle.Flex;
185186
}
186187

@@ -192,7 +193,7 @@ private void UpdateCustomDataImage()
192193
return;
193194
}
194195

195-
CustomDataImage.image = ResCache.GetCustomDataIcon();
196+
CustomDataImage.image = EditorMessageUtility.GetCustomDataIcon();
196197
CustomDataImage.style.display = DisplayStyle.Flex;
197198
}
198199

Editor/MessageTypeToggle.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,18 @@ public void SetMessageType(MessageType messageType, int messageCount)
3434
switch (messageType)
3535
{
3636
case MessageType.Info:
37-
_icon = ResCache.GetInfoIcon();
38-
_iconInactive = ResCache.GetInfoIcon(true);
37+
_icon = EditorMessageUtility.GetInfoIcon();
38+
_iconInactive = EditorMessageUtility.GetInfoIcon(true);
3939
break;
4040

4141
case MessageType.Warning:
42-
_icon = ResCache.GetWarningIcon();
43-
_iconInactive = ResCache.GetWarningIcon(true);
42+
_icon = EditorMessageUtility.GetWarningIcon();
43+
_iconInactive = EditorMessageUtility.GetWarningIcon(true);
4444
break;
4545

4646
case MessageType.Error:
47-
_icon = ResCache.GetErrorIcon();
48-
_iconInactive = ResCache.GetErrorIcon(true);
47+
_icon = EditorMessageUtility.GetErrorIcon();
48+
_iconInactive = EditorMessageUtility.GetErrorIcon(true);
4949
break;
5050

5151
default:

Editor/MessageViewer.cs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ public class MessageViewer : EditorWindow
1414
private static MessageViewer _sourcelessInstance;
1515
private static Dictionary<object, MessageViewer> _sourcedInstanceDict;
1616

17+
/// <summary>
18+
/// 打开消息查看器窗口。
19+
/// </summary>
20+
/// <param name="messages">消息列表。</param>
21+
/// <param name="source">调用源。当调用源变为null时,消息查看器窗口会自动关闭。若传入null,则消息查看器窗口不会自动关闭。</param>
22+
/// <param name="sourceName">调用源的名字。会出现在消息查看器窗口标题中。</param>
23+
/// <returns></returns>
1724
public static MessageViewer Open(IList<Message> messages, object source, string sourceName)
1825
{
1926
if (source == null)
@@ -67,6 +74,7 @@ public static MessageViewer Open(object source, string sourceName)
6774
public IList<Message> Messages { get; private set; }
6875

6976
private bool _sourceless;
77+
private int _messageCountCache;
7078
private readonly List<Message> _filteredMessageList = new List<Message>();
7179
private Action<Message> _customDataHandler;
7280

@@ -250,6 +258,16 @@ private void CreateGUI()
250258
_messageListView.selectionChanged += OnSelectedMessageChanged;
251259
messageListContainer.Add(_messageListView);
252260

261+
// Message Details Scroll
262+
ScrollView messageDetailsScrollView = new ScrollView(ScrollViewMode.Vertical)
263+
{
264+
style =
265+
{
266+
flexGrow = 1,
267+
}
268+
};
269+
messageDetailsContainer.Add(messageDetailsScrollView);
270+
253271
// Message Details Label
254272
_messageDetailsLabel = new Label
255273
{
@@ -258,16 +276,22 @@ private void CreateGUI()
258276
style =
259277
{
260278
flexGrow = 1,
279+
whiteSpace = WhiteSpace.Normal,
261280
}
262281
};
263-
messageDetailsContainer.Add(_messageDetailsLabel);
282+
messageDetailsScrollView.Add(_messageDetailsLabel);
264283

265284
_createGuiEnd = true;
266285
Refresh();
267286
}
268287

269288
private void Update()
270289
{
290+
if (Messages != null && Messages.Count != _messageCountCache)
291+
{
292+
Refresh();
293+
}
294+
271295
TryClose();
272296
}
273297

@@ -301,6 +325,7 @@ public void Refresh()
301325
}
302326

303327
Messages.CountByType(out int infoCount, out int warningCount, out int errorCount);
328+
_messageCountCache = infoCount + warningCount + errorCount;
304329
_infoMessageToggle.SetMessageCount(infoCount);
305330
_warningMessageToggle.SetMessageCount(warningCount);
306331
_errorMessageToggle.SetMessageCount(errorCount);

README.md

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,27 @@
11
# Editor Messages
22

3+
在Unity Editor中查看和处理自定义消息的工具。<br/>A tool to view and process custom messages in Unity Editor.
4+
5+
## 功能<br/>Features
6+
7+
消息可以指定类型、时间戳、标签、内容、上下文和自定义数据。<br/>Messages can specify type, timestamp, label, content, context, and custom data.
8+
9+
消息查看器中可以切换显示行号、时间戳,按类型、文本筛选消息,支持正则表达式筛选。<br/>The message viewer can switch to display line numbers, timestamps, filter messages by type and text, and support regular expression filtering.
10+
11+
点击消息时,可以查看完整消息内容,若上下文对象是Unity Object,可以定位上下文对象;双击消息时,可以执行自定义的数据处理流程。<br/>Messages can have context objects and custom data. Clicking a message will show the full message content, and if the context object is a Unity Object, it will locate the context object. Double-clicking a message will execute the custom data processing flow.
12+
13+
![Message Viewer](./Documents~/imgs/img_sample_message_viewer.png)
14+
15+
附带一个可以嵌入到其他窗口的横幅组件,在双击时可以打开消息查看器窗口。<br/>It also has a banner component that can be embedded into other windows. It opens the message viewer window when double clicked.
16+
17+
横幅组件可以选择显示消息列表的最后一条消息,或循环显示消息列表中的消息。<br/>The banner component can choose to display the last message in the message list or loop through the messages in the message list.
18+
19+
![Message Viewer](./Documents~/imgs/img_sample_message_banner.png)
20+
321

422
## 支持的Unity版本<br/>Supported Unity Versions
523

6-
Unity 2021.3及更新版本。<br/>Unity 2021.3 or higher.
24+
Unity 2022.3及更新版本。<br/>Unity 2022.3 or higher.
725

826

927
## 安装方式<br/>Installation
@@ -15,5 +33,8 @@ Unity 2021.3及更新版本。<br/>Unity 2021.3 or higher.
1533

1634
## 如何使用<br/>How to Use
1735

18-
TODO
36+
使用类型 `Message` 构建消息对象。<br/>Use type `Message` to build message objects.
37+
38+
使用 `MessageViewer.Open()` 方法打开消息查看器窗口。参数用途请查看方法注释。<br/>Use `MessageViewer.Open()` to open the message viewer window. For parameter usage, please refer to the method comments.
1939

40+
使用类型 `MessageBanner` 构建可以嵌入到其他窗口的横幅组件。参数用途请查看方法注释。<br/>Use type `MessageBanner` to build a banner component that can be embedded into other windows. For parameter usage, please refer to the method comments.

Runtime/Message.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@ public enum MessageType
1818
[Serializable]
1919
public class Message
2020
{
21-
public static Message Info(string content, string tag, object context, string customData = null)
21+
public static Message Info(string content, string tag = null, object context = null, string customData = null)
2222
{
2323
return new Message(MessageType.Info, DateTime.Now.Ticks, content, tag, context, customData);
2424
}
2525

26-
public static Message Warning(string content, string tag, object context, string customData = null)
26+
public static Message Warning(string content, string tag = null, object context = null, string customData = null)
2727
{
2828
return new Message(MessageType.Warning, DateTime.Now.Ticks, content, tag, context, customData);
2929
}
3030

31-
public static Message Error(string content, string tag, object context, string customData = null)
31+
public static Message Error(string content, string tag = null, object context = null, string customData = null)
3232
{
3333
return new Message(MessageType.Error, DateTime.Now.Ticks, content, tag, context, customData);
3434
}

0 commit comments

Comments
 (0)