Compare commits

..

No commits in common. "12eb4e74cf659634956145930f079ce598e1180f" and "35e937dbf523d71f6bae136859edb6b722920eae" have entirely different histories.

58 changed files with 2919 additions and 640 deletions

View File

@ -1,6 +0,0 @@
{
"version": "1.0",
"components": [
"Microsoft.VisualStudio.Workload.ManagedGame"
]
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6da43df589d0e9e4486e200a9058c15f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,46 +0,0 @@
using System;
using System.Collections.Generic;
using NodeCanvas.Framework;
using ParadoxNotion;
using UnityEngine;
namespace GameplayEditor.Core
{
/// <summary>
/// 所有活动节点类型的抽象基类
/// 每个子类对应一张配置表,有独立的字段结构和导出逻辑
/// </summary>
[Serializable]
public abstract class ActivityNodeBase : Node
{
/// <summary>表格名称,用于路由到对应 CSV 文件</summary>
public abstract string TableName { get; }
/// <summary>字段名CSV 第1行</summary>
public abstract string[] FieldNames { get; }
/// <summary>字段类型CSV 第2行</summary>
public abstract string[] FieldTypes { get; }
/// <summary>字段说明CSV 第3行</summary>
public abstract string[] FieldDocs { get; }
/// <summary>将节点数据序列化为一行 CSV 数据</summary>
public abstract Dictionary<string, string> ToExcelRow();
/// <summary>从 CSV 一行数据反序列化到节点字段</summary>
public abstract void FromExcelRow(Dictionary<string, string> data);
// 所有子类共用的 Node 抽象属性
public override int maxInConnections => -1;
public override int maxOutConnections => -1;
public override Type outConnectionType => typeof(GameplayConnection);
public override bool allowAsPrime => true;
public override bool canSelfConnect => false;
public override Alignment2x2 commentsAlignment => Alignment2x2.Bottom;
public override Alignment2x2 iconAlignment => Alignment2x2.Default;
protected override Status OnExecute(Component agent, IBlackboard blackboard)
=> Status.Success;
}
}

View File

@ -1,9 +0,0 @@
using NodeCanvas.Framework;
namespace GameplayEditor.Core
{
[System.Serializable]
public class GameplayConnection : Connection
{
}
}

View File

@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: b4288e8c48438d9418ecb6578e78f32b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,4 +0,0 @@
LevelID,NodeID,NodeLayer,EventTypeGroup,Priority,EventMappingID,InteractVisible,NodeState,ParentNodeID
int,int,int,string,string,int,bool,bool,int
关卡编号ID,节点ID唯一,节点层级,节点事件类型组(|分隔),优先级权重(|分隔),存储事件ID映射,交互是否可见,节点是否可进入,父节点ID-1表示根节点
1,1,1,1,1,1,True,True,-1
1 LevelID NodeID NodeLayer EventTypeGroup Priority EventMappingID InteractVisible NodeState ParentNodeID
2 int int int string string int bool bool int
3 关卡编号ID 节点ID(唯一) 节点层级 节点事件类型组(|分隔) 优先级权重(|分隔) 存储事件ID映射 交互是否可见 节点是否可进入 父节点ID(-1表示根节点)
4 1 1 1 1 1 1 True True -1

View File

@ -0,0 +1,69 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8f107dc6d4c984c45bdafd3bb15f98f0, type: 3}
m_Name: 5 Build and Publish
m_EditorClassIdentifier:
TutorialTitle:
m_Untranslated: Build, publish, & BONUS
m_ProgressTrackingEnabled: 1
m_LessonId: 47146
m_Version: 1
m_SceneManagementBehavior: 0
m_Scenes:
- {fileID: 102900000, guid: 92786e23da2af4a4f8803aaf44c47121, type: 3}
m_DefaultSceneCameraSettings:
m_CameraMode: 0
m_FocusMode: 0
m_Orthographic: 0
m_Size: 0
m_Pivot: {x: 0, y: 0, z: 0}
m_Rotation: {x: 0, y: 0, z: 0, w: 0}
m_FrameObject:
m_SceneGuid:
m_GameObjectGuid:
m_SerializedComponentType:
m_TypeName:
m_ComponentIndex: 0
m_AssetObject: {fileID: 0}
m_Prefab: {fileID: 0}
m_Enabled: 0
m_WindowLayout: {fileID: 0}
m_Pages:
m_Items:
- {fileID: 11400000, guid: 2e886da6f6aba0f47b6241a2700a78b9, type: 2}
- {fileID: 11400000, guid: fcca6e4cbcfd27e49bf16a7c3a6eb019, type: 2}
- {fileID: 11400000, guid: 97f3ee3958d87894d8f23cc258f28f0e, type: 2}
- {fileID: 11400000, guid: eb4604b43980b3740a07722643b2ecbe, type: 2}
- {fileID: 11400000, guid: daafa2d048ca372498d84eb1ff8a9a31, type: 2}
- {fileID: 11400000, guid: 6f964d3cc40f45747aebcf0c57f609ba, type: 2}
- {fileID: 11400000, guid: 9903de0d10380094eb753dcdac1f5e68, type: 2}
- {fileID: 11400000, guid: 5ae42c0e96418ec46b613bb3c92bb7b3, type: 2}
Modified:
m_PersistentCalls:
m_Calls: []
Initiated:
m_PersistentCalls:
m_Calls: []
PageInitiated:
m_PersistentCalls:
m_Calls: []
GoingBack:
m_PersistentCalls:
m_Calls: []
Completed:
m_PersistentCalls:
m_Calls: []
Quit:
m_PersistentCalls:
m_Calls: []
m_Scene: {fileID: 0}
m_TutorialTitle:

View File

@ -1,8 +1,8 @@
fileFormatVersion: 2
guid: a1a9b6f3bf5e07344b1a1a522f1c9b5a
folderAsset: yes
DefaultImporter:
guid: c122a1a2efeb58349b8154e42481067b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 4cfe3e64882de254fba06f94153dab56
guid: efb2368ee8bed9140a42c2805613ed11
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -0,0 +1,14 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c3420f187011c1a43824ca0d4c88d6c6, type: 3}
m_Name: PublishCriteria
m_EditorClassIdentifier:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 43f99256ccd065c47b41dc50b89eb706
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,69 @@
using System.Linq;
using Unity.Play.Publisher.Editor;
using UnityEngine;
namespace Unity.Tutorials
{
/// <summary>
/// Contaisn all the callbacks needed for the Build And Publish tutorial
/// </summary>
[CreateAssetMenu(fileName = "PublishCriteria", menuName = "Tutorials/Microgame/PublishCriteria")]
class PublishCriteria : ScriptableObject
{
static PublisherWindow publisherWindow;
public bool IsNotDisplayingFirstTimeInstructions()
{
if (!IsWebGLPublisherOpen()) { return false; }
return (!string.IsNullOrEmpty(publisherWindow.CurrentTab) && publisherWindow.CurrentTab != PublisherWindow.TabIntroduction);
}
public bool IsUserLoggedIn()
{
if (!IsWebGLPublisherOpen()) { return false; }
return (publisherWindow.CurrentTab != PublisherWindow.TabNotLoggedIn);
}
public bool IsBuildBeingUploaded()
{
if (!IsWebGLPublisherOpen()) { return false; }
switch (PublisherUtils.GetCurrentPublisherState(publisherWindow))
{
case PublisherState.Upload:
case PublisherState.Process:
return true;
default: break;
}
return !string.IsNullOrEmpty(PublisherUtils.GetUrlOfLastPublishedBuild(publisherWindow));
}
public bool IsBuildPublished()
{
if (!IsWebGLPublisherOpen()) { return false; }
return !string.IsNullOrEmpty(PublisherUtils.GetUrlOfLastPublishedBuild(publisherWindow));
}
public bool AtLeastOneBuildIsRegistered()
{
if (!IsWebGLPublisherOpen()) { return false; }
switch (PublisherUtils.GetCurrentPublisherState(publisherWindow))
{
case PublisherState.Zip:
case PublisherState.Upload:
case PublisherState.Process:
return true;
default: break;
}
int availableBuilds = PublisherUtils.GetAllBuildsDirectories()
.Where(p => (p != string.Empty)
&& PublisherUtils.BuildIsValid(p)).Count();
return availableBuilds > 0;
}
bool IsWebGLPublisherOpen()
{
if (publisherWindow) { return true; }
publisherWindow = PublisherWindow.FindInstance();
return false;
}
}
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 7d04cbc7dec380c4a80a1cf00bcab601
guid: c3420f187011c1a43824ca0d4c88d6c6
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@ -0,0 +1,17 @@
{
"name": "Unity.Microgame.Tutorials",
"references": [
"GUID:149cad238efed4f53ac932b1e9555356"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 89e2f58b96cb09245a29a89b64f4239d
TextScriptImporter:
guid: 91426e0839faeb34d86ad8835bdfb743
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:

View File

@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: a231f89d5f90f6b45b04ea196ff35119
VideoClipImporter:
externalObjects: {}
serializedVersion: 2
frameRange: 0
startFrame: -1
endFrame: -1
colorSpace: 0
deinterlace: 0
encodeAlpha: 0
flipVertical: 0
flipHorizontal: 0
importAudio: 1
targetSettings: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 4b30147b1a648474289a85d083bfe7d3
VideoClipImporter:
externalObjects: {}
serializedVersion: 2
frameRange: 0
startFrame: -1
endFrame: -1
colorSpace: 0
deinterlace: 0
encodeAlpha: 0
flipVertical: 0
flipHorizontal: 0
importAudio: 1
targetSettings: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,92 @@
fileFormatVersion: 2
guid: 837030d6eaeb92b4aaba503b87f17491
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 04d21b8885e76ec4885ffd9fc01efa6d
VideoClipImporter:
externalObjects: {}
serializedVersion: 2
frameRange: 0
startFrame: -1
endFrame: -1
colorSpace: 0
deinterlace: 0
encodeAlpha: 0
flipVertical: 0
flipHorizontal: 0
importAudio: 1
targetSettings: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,92 @@
fileFormatVersion: 2
guid: 4ac6c8dffabf68a4893d8a66a9c39792
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,92 @@
fileFormatVersion: 2
guid: e430ed4d1b31c0f47952237586390b14
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,92 @@
fileFormatVersion: 2
guid: da782c249fbe4ed4b93af25ce2b1e44e
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,154 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
m_Name: Walkthrough7-005
m_EditorClassIdentifier:
m_Paragraphs:
m_Items:
- m_Type: 6
Title:
m_Untranslated:
Text:
m_Untranslated:
m_Tutorial: {fileID: 0}
m_Image: {fileID: 2800000, guid: 7047302abcab8496488f93b3f766350d, type: 3}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 1
m_UnmaskedViews:
- m_SelectorType: 1
m_ViewType:
m_TypeName:
m_EditorWindowType:
m_TypeName: Unity.Tutorials.Core.Editor.TutorialWindow, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_AlternateEditorWindowTypes:
m_Items: []
m_MaskType: 0
m_MaskSizeModifier: 0
m_UnmaskedControls: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 0
Title:
m_Untranslated: Build, publish, & BONUS
Text:
m_Untranslated: "Before you publish your game, discover more ways to customize
it with the Karting <a href=\"https://learn.unity.com/project/karting-template\">Creative
Mods</a>.\n\nWhen you\u2019re ready, this tutorial will guide you through
building and publishing your game on a webpage that you can share with
friends!\n\n<b>BONUS:</b> by publishing your game, you\u2019ll unlock a
self-driving <b>Roadster Kart</b> to use in future builds!\n\n<b>Note:</b>\n\n\u2022
The Creative Mods link above will open the Unity Learn website in your
default browser.\n\n\u2022 Please keep in mind that building this Unity
project can take some time."
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary: Build and publish
m_Description: "Before you publish your game, have you tried adding some of
the LEGO\xAE <a href=\"https://learn.unity.com/project/lego-template\">Creative
Mods</a> to make it your own? \r\n\r\nWhen you\u2019re ready, this tutorial
will guide you through building and publishing your game so your friends
and family can play it on a dedicated webpage.\r\n\r\n<b>Notes:</b>\n\n\u2022
The Creative Mods link above will open the Unity Learn website in your default
browser.\n\n\u2022 Building this Unity project can take some time \u2014
please be patient when you complete this tutorial and publish your game.
\r"
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 1
Title:
m_Untranslated:
Text:
m_Untranslated: Select <b>Start</b> to begin.
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText: Select <b>Start</b> to begin.
m_TutorialButtonText:
m_CameraSettings:
m_CameraMode: 0
m_FocusMode: 0
m_Orthographic: 0
m_Size: 0
m_Pivot: {x: 0, y: 0, z: 0}
m_Rotation: {x: 0, y: 0, z: 0, w: 0}
m_FrameObject:
m_SceneGuid:
m_GameObjectGuid:
m_SerializedComponentType:
m_TypeName:
m_ComponentIndex: 0
m_AssetObject: {fileID: 0}
m_Prefab: {fileID: 0}
m_Enabled: 0
NextButton:
m_Untranslated: Start
DoneButton:
m_Untranslated: Done
m_CompletedSound: {fileID: 8300000, guid: 93fbb109633e844259ea828442bda0cb, type: 3}
m_AutoAdvance: 0
Showing:
m_PersistentCalls:
m_Calls: []
Shown:
m_PersistentCalls:
m_Calls: []
Staying:
m_PersistentCalls:
m_Calls: []
CriteriaValidated:
m_PersistentCalls:
m_Calls: []
MaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
NonMaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
m_OnBeforePageShown:
m_PersistentCalls:
m_Calls: []
m_OnAfterPageShown:
m_PersistentCalls:
m_Calls: []
m_OnTutorialPageStay:
m_PersistentCalls:
m_Calls: []
m_OnBeforeTutorialQuit:
m_PersistentCalls:
m_Calls: []
m_NextButton: Start
m_DoneButton: Done

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2e886da6f6aba0f47b6241a2700a78b9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,165 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-4710486571970311243
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f095ab04ffe3b514c808035bb335fa56, type: 3}
m_Name:
m_EditorClassIdentifier:
Completed:
m_PersistentCalls:
m_Calls: []
Invalidated:
m_PersistentCalls:
m_Calls: []
m_EditorWindowType:
m_TypeName: Unity.Play.Publisher.Editor.PublisherWindow, Unity.Play.Publisher.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_CloseIfAlreadyOpen: 0
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
m_Name: Walkthrough7-010
m_EditorClassIdentifier:
m_Paragraphs:
m_Items:
- m_Type: 6
Title:
m_Untranslated:
Text:
m_Untranslated:
m_Tutorial: {fileID: 0}
m_Image: {fileID: 2800000, guid: 4ac6c8dffabf68a4893d8a66a9c39792, type: 3}
m_Video: {fileID: 32900000, guid: 5b7680371f1b34fe49c339038de4258f, type: 3}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 1
m_UnmaskedViews:
- m_SelectorType: 1
m_ViewType:
m_TypeName:
m_EditorWindowType:
m_TypeName: Unity.Tutorials.Core.Editor.TutorialWindow, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_AlternateEditorWindowTypes:
m_Items: []
m_MaskType: 0
m_MaskSizeModifier: 0
m_UnmaskedControls: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 0
Title:
m_Untranslated: Open the WebGL Publisher
Text:
m_Untranslated: "In this tutorial, you\u2019ll export your Microgame project
as a WebGL game. Your game will then have its own dedicated webpage. "
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 1
Title:
m_Untranslated: Open the WebGL Publisher window
Text:
m_Untranslated: In the top menu, go to <b>Publish</b> > <b>WebGL project</b>.
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items:
- Type:
m_TypeName: Unity.Tutorials.Core.Editor.EditorWindowCriterion, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Criterion: {fileID: -4710486571970311243}
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
m_CameraSettings:
m_CameraMode: 0
m_FocusMode: 0
m_Orthographic: 0
m_Size: 0
m_Pivot: {x: 0, y: 0, z: 0}
m_Rotation: {x: 0, y: 0, z: 0, w: 0}
m_FrameObject:
m_SceneGuid:
m_GameObjectGuid:
m_SerializedComponentType:
m_TypeName:
m_ComponentIndex: 0
m_AssetObject: {fileID: 0}
m_Prefab: {fileID: 0}
m_Enabled: 0
NextButton:
m_Untranslated: Next
DoneButton:
m_Untranslated: Done
m_CompletedSound: {fileID: 8300000, guid: 93fbb109633e844259ea828442bda0cb, type: 3}
m_AutoAdvance: 1
Showing:
m_PersistentCalls:
m_Calls: []
Shown:
m_PersistentCalls:
m_Calls: []
Staying:
m_PersistentCalls:
m_Calls: []
CriteriaValidated:
m_PersistentCalls:
m_Calls: []
MaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
NonMaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
m_OnBeforePageShown:
m_PersistentCalls:
m_Calls: []
m_OnAfterPageShown:
m_PersistentCalls:
m_Calls: []
m_OnTutorialPageStay:
m_PersistentCalls:
m_Calls: []
m_OnBeforeTutorialQuit:
m_PersistentCalls:
m_Calls: []
m_NextButton:
m_DoneButton:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fcca6e4cbcfd27e49bf16a7c3a6eb019
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,177 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
m_Name: Walkthrough7-013
m_EditorClassIdentifier:
m_Paragraphs:
m_Items:
- m_Type: 7
Title:
m_Untranslated:
Text:
m_Untranslated:
m_Tutorial: {fileID: 0}
m_Image: {fileID: 2800000, guid: 8397db88d32d5418e8ebc7e6bb6ccafc, type: 3}
m_Video: {fileID: 32900000, guid: 4b30147b1a648474289a85d083bfe7d3, type: 3}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 1
m_UnmaskedViews:
- m_SelectorType: 1
m_ViewType:
m_TypeName:
m_EditorWindowType:
m_TypeName: Unity.Play.Publisher.Editor.PublisherWindow, Unity.Play.Publisher.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_AlternateEditorWindowTypes:
m_Items: []
m_MaskType: 0
m_MaskSizeModifier: 0
m_UnmaskedControls: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 0
Title:
m_Untranslated: Get started
Text:
m_Untranslated: "Now that you\u2019ve opened the <b>WebGL Publisher</b> window,
you can set up the Unity Editor to publish projects on Unity Play."
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 1
Title:
m_Untranslated:
Text:
m_Untranslated: Select <b>Get Started</b> in the <b>WebGL Publisher</b> window.
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items:
- Type:
m_TypeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Criterion: {fileID: 1171428662055131150}
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
m_CameraSettings:
m_CameraMode: 0
m_FocusMode: 0
m_Orthographic: 0
m_Size: 0
m_Pivot: {x: 0, y: 0, z: 0}
m_Rotation: {x: 0, y: 0, z: 0, w: 0}
m_FrameObject:
m_SceneGuid:
m_GameObjectGuid:
m_SerializedComponentType:
m_TypeName:
m_ComponentIndex: 0
m_AssetObject: {fileID: 0}
m_Prefab: {fileID: 0}
m_Enabled: 0
NextButton:
m_Untranslated: Next
DoneButton:
m_Untranslated: Done
m_CompletedSound: {fileID: 8300000, guid: 93fbb109633e844259ea828442bda0cb, type: 3}
m_AutoAdvance: 1
Showing:
m_PersistentCalls:
m_Calls: []
Shown:
m_PersistentCalls:
m_Calls: []
Staying:
m_PersistentCalls:
m_Calls: []
CriteriaValidated:
m_PersistentCalls:
m_Calls: []
MaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
NonMaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
m_OnBeforePageShown:
m_PersistentCalls:
m_Calls: []
m_OnAfterPageShown:
m_PersistentCalls:
m_Calls: []
m_OnTutorialPageStay:
m_PersistentCalls:
m_Calls: []
m_OnBeforeTutorialQuit:
m_PersistentCalls:
m_Calls: []
m_NextButton:
m_DoneButton:
--- !u!114 &1171428662055131150
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7231e8df50e16c74c979c4a2affab91b, type: 3}
m_Name:
m_EditorClassIdentifier:
Completed:
m_PersistentCalls:
m_Calls: []
Invalidated:
m_PersistentCalls:
m_Calls: []
m_Callback:
_target: {fileID: 11400000, guid: 43f99256ccd065c47b41dc50b89eb706, type: 2}
_methodName: IsNotDisplayingFirstTimeInstructions
_args: []
_dynamic: 0
_typeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion+BoolCallback, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
dirty: 0
m_AutoCompleteCallback:
_target: {fileID: 0}
_methodName:
_args: []
_dynamic: 0
_typeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion+BoolCallback, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
dirty: 0

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 97f3ee3958d87894d8f23cc258f28f0e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,177 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
m_Name: Walkthrough7-014
m_EditorClassIdentifier:
m_Paragraphs:
m_Items:
- m_Type: 6
Title:
m_Untranslated:
Text:
m_Untranslated:
m_Tutorial: {fileID: 0}
m_Image: {fileID: 2800000, guid: e430ed4d1b31c0f47952237586390b14, type: 3}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 1
m_UnmaskedViews:
- m_SelectorType: 1
m_ViewType:
m_TypeName:
m_EditorWindowType:
m_TypeName: Unity.Play.Publisher.Editor.PublisherWindow, Unity.Play.Publisher.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_AlternateEditorWindowTypes:
m_Items: []
m_MaskType: 0
m_MaskSizeModifier: 0
m_UnmaskedControls: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 0
Title:
m_Untranslated: Sign in
Text:
m_Untranslated: To publish your game on Unity Play, you need to sign in with
your Unity ID.
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 1
Title:
m_Untranslated:
Text:
m_Untranslated: Select <b>Sign in</b>, then sign in with your Unity ID.
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items:
- Type:
m_TypeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Criterion: {fileID: 1171428662055131150}
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
m_CameraSettings:
m_CameraMode: 0
m_FocusMode: 0
m_Orthographic: 0
m_Size: 0
m_Pivot: {x: 0, y: 0, z: 0}
m_Rotation: {x: 0, y: 0, z: 0, w: 0}
m_FrameObject:
m_SceneGuid:
m_GameObjectGuid:
m_SerializedComponentType:
m_TypeName:
m_ComponentIndex: 0
m_AssetObject: {fileID: 0}
m_Prefab: {fileID: 0}
m_Enabled: 0
NextButton:
m_Untranslated: Next
DoneButton:
m_Untranslated: Done
m_CompletedSound: {fileID: 8300000, guid: 93fbb109633e844259ea828442bda0cb, type: 3}
m_AutoAdvance: 1
Showing:
m_PersistentCalls:
m_Calls: []
Shown:
m_PersistentCalls:
m_Calls: []
Staying:
m_PersistentCalls:
m_Calls: []
CriteriaValidated:
m_PersistentCalls:
m_Calls: []
MaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
NonMaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
m_OnBeforePageShown:
m_PersistentCalls:
m_Calls: []
m_OnAfterPageShown:
m_PersistentCalls:
m_Calls: []
m_OnTutorialPageStay:
m_PersistentCalls:
m_Calls: []
m_OnBeforeTutorialQuit:
m_PersistentCalls:
m_Calls: []
m_NextButton:
m_DoneButton:
--- !u!114 &1171428662055131150
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7231e8df50e16c74c979c4a2affab91b, type: 3}
m_Name:
m_EditorClassIdentifier:
Completed:
m_PersistentCalls:
m_Calls: []
Invalidated:
m_PersistentCalls:
m_Calls: []
m_Callback:
_target: {fileID: 11400000, guid: 43f99256ccd065c47b41dc50b89eb706, type: 2}
_methodName: IsUserLoggedIn
_args: []
_dynamic: 0
_typeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion+BoolCallback, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
dirty: 0
m_AutoCompleteCallback:
_target: {fileID: 0}
_methodName:
_args: []
_dynamic: 0
_typeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion+BoolCallback, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
dirty: 0

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: eb4604b43980b3740a07722643b2ecbe
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,207 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-682297016320248225
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7231e8df50e16c74c979c4a2affab91b, type: 3}
m_Name:
m_EditorClassIdentifier:
Completed:
m_PersistentCalls:
m_Calls: []
Invalidated:
m_PersistentCalls:
m_Calls: []
m_Callback:
_target: {fileID: 11400000, guid: 43f99256ccd065c47b41dc50b89eb706, type: 2}
_methodName: AtLeastOneBuildIsRegistered
_args: []
_dynamic: 0
_typeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion+BoolCallback, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
dirty: 0
m_AutoCompleteCallback:
_target: {fileID: 0}
_methodName:
_args: []
_dynamic: 0
_typeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion+BoolCallback, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
dirty: 0
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
m_Name: Walkthrough7-015
m_EditorClassIdentifier:
m_Paragraphs:
m_Items:
- m_Type: 7
Title:
m_Untranslated:
Text:
m_Untranslated:
m_Tutorial: {fileID: 0}
m_Image: {fileID: 2800000, guid: 8397db88d32d5418e8ebc7e6bb6ccafc, type: 3}
m_Video: {fileID: 32900000, guid: a231f89d5f90f6b45b04ea196ff35119, type: 3}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 1
m_UnmaskedViews:
- m_SelectorType: 1
m_ViewType:
m_TypeName:
m_EditorWindowType:
m_TypeName: Unity.Play.Publisher.Editor.PublisherWindow, Unity.Play.Publisher.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_AlternateEditorWindowTypes:
m_Items: []
m_MaskType: 0
m_MaskSizeModifier: 0
m_UnmaskedControls: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 0
Title:
m_Untranslated: Build your game
Text:
m_Untranslated: "Before you can publish your game, you need to build it.
This will create a playable file of your game on your computer.\n\n<b>Notes:</b>\n\n\u2022
This step could take up to 30 minutes.\n\n\u2022 If you are prompted to
switch to WebGL, click <b>\"Switch to WebGL\"</b> and choose a folder for
your build in the window that appears. \n\n\u2022 You can use the default
folder, or create a new folder to store your build files."
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 1
Title:
m_Untranslated:
Text:
m_Untranslated: 'Select <b>Build and Publish</b>.
When your build
is complete, select <b>Next</b> to continue.'
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 1
m_Criteria:
m_Items:
- Type:
m_TypeName: Unity.Tutorials.Core.Editor.BuildStartedCriterion, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Criterion: {fileID: 4935916112382527856}
- Type:
m_TypeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Criterion: {fileID: -682297016320248225}
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
m_CameraSettings:
m_CameraMode: 0
m_FocusMode: 0
m_Orthographic: 0
m_Size: 0
m_Pivot: {x: 0, y: 0, z: 0}
m_Rotation: {x: 0, y: 0, z: 0, w: 0}
m_FrameObject:
m_SceneGuid:
m_GameObjectGuid:
m_SerializedComponentType:
m_TypeName:
m_ComponentIndex: 0
m_AssetObject: {fileID: 0}
m_Prefab: {fileID: 0}
m_Enabled: 0
NextButton:
m_Untranslated: Next
DoneButton:
m_Untranslated: Done
m_CompletedSound: {fileID: 8300000, guid: 93fbb109633e844259ea828442bda0cb, type: 3}
m_AutoAdvance: 1
Showing:
m_PersistentCalls:
m_Calls: []
Shown:
m_PersistentCalls:
m_Calls: []
Staying:
m_PersistentCalls:
m_Calls: []
CriteriaValidated:
m_PersistentCalls:
m_Calls: []
MaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
NonMaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
m_OnBeforePageShown:
m_PersistentCalls:
m_Calls: []
m_OnAfterPageShown:
m_PersistentCalls:
m_Calls: []
m_OnTutorialPageStay:
m_PersistentCalls:
m_Calls: []
m_OnBeforeTutorialQuit:
m_PersistentCalls:
m_Calls: []
m_NextButton:
m_DoneButton:
--- !u!114 &4935916112382527856
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 17ecd043c7572b4429873c0f8ef1cae2, type: 3}
m_Name:
m_EditorClassIdentifier:
Completed:
m_PersistentCalls:
m_Calls: []
Invalidated:
m_PersistentCalls:
m_Calls: []

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: daafa2d048ca372498d84eb1ff8a9a31
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,180 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-2340161092345423632
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7231e8df50e16c74c979c4a2affab91b, type: 3}
m_Name:
m_EditorClassIdentifier:
Completed:
m_PersistentCalls:
m_Calls: []
Invalidated:
m_PersistentCalls:
m_Calls: []
m_Callback:
_target: {fileID: 11400000, guid: 43f99256ccd065c47b41dc50b89eb706, type: 2}
_methodName: IsBuildBeingUploaded
_args: []
_dynamic: 0
_typeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion+BoolCallback, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
dirty: 0
m_AutoCompleteCallback:
_target: {fileID: 0}
_methodName:
_args: []
_dynamic: 0
_typeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion+BoolCallback, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
dirty: 0
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
m_Name: Walkthrough7-020
m_EditorClassIdentifier:
m_Paragraphs:
m_Items:
- m_Type: 7
Title:
m_Untranslated:
Text:
m_Untranslated:
m_Tutorial: {fileID: 0}
m_Image: {fileID: 2800000, guid: 8397db88d32d5418e8ebc7e6bb6ccafc, type: 3}
m_Video: {fileID: 32900000, guid: 04d21b8885e76ec4885ffd9fc01efa6d, type: 3}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 1
m_UnmaskedViews:
- m_SelectorType: 1
m_ViewType:
m_TypeName:
m_EditorWindowType:
m_TypeName: Unity.Play.Publisher.Editor.PublisherWindow, Unity.Play.Publisher.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_AlternateEditorWindowTypes:
m_Items: []
m_MaskType: 0
m_MaskSizeModifier: 0
m_UnmaskedControls: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 0
Title:
m_Untranslated: Publish your game
Text:
m_Untranslated: 'Now that your build is ready, you can publish it on Unity
Play!
<b>Note:</b> This step could take up to 30 minutes.'
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 1
Title:
m_Untranslated:
Text:
m_Untranslated: Select <b>Publish</b> to publish your build on Unity Play.
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items:
- Type:
m_TypeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Criterion: {fileID: -2340161092345423632}
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
m_CameraSettings:
m_CameraMode: 0
m_FocusMode: 0
m_Orthographic: 0
m_Size: 0
m_Pivot: {x: 0, y: 0, z: 0}
m_Rotation: {x: 0, y: 0, z: 0, w: 0}
m_FrameObject:
m_SceneGuid:
m_GameObjectGuid:
m_SerializedComponentType:
m_TypeName:
m_ComponentIndex: 0
m_AssetObject: {fileID: 0}
m_Prefab: {fileID: 0}
m_Enabled: 0
NextButton:
m_Untranslated: Next
DoneButton:
m_Untranslated: Done
m_CompletedSound: {fileID: 8300000, guid: 93fbb109633e844259ea828442bda0cb, type: 3}
m_AutoAdvance: 1
Showing:
m_PersistentCalls:
m_Calls: []
Shown:
m_PersistentCalls:
m_Calls: []
Staying:
m_PersistentCalls:
m_Calls: []
CriteriaValidated:
m_PersistentCalls:
m_Calls: []
MaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
NonMaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
m_OnBeforePageShown:
m_PersistentCalls:
m_Calls: []
m_OnAfterPageShown:
m_PersistentCalls:
m_Calls: []
m_OnTutorialPageStay:
m_PersistentCalls:
m_Calls: []
m_OnBeforeTutorialQuit:
m_PersistentCalls:
m_Calls: []
m_NextButton:
m_DoneButton:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6f964d3cc40f45747aebcf0c57f609ba
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,177 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-2340161092345423632
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7231e8df50e16c74c979c4a2affab91b, type: 3}
m_Name:
m_EditorClassIdentifier:
Completed:
m_PersistentCalls:
m_Calls: []
Invalidated:
m_PersistentCalls:
m_Calls: []
m_Callback:
_target: {fileID: 11400000, guid: 43f99256ccd065c47b41dc50b89eb706, type: 2}
_methodName: IsBuildPublished
_args: []
_dynamic: 0
_typeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion+BoolCallback, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
dirty: 0
m_AutoCompleteCallback:
_target: {fileID: 0}
_methodName:
_args: []
_dynamic: 0
_typeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion+BoolCallback, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
dirty: 0
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
m_Name: Walkthrough7-025
m_EditorClassIdentifier:
m_Paragraphs:
m_Items:
- m_Type: 7
Title:
m_Untranslated:
Text:
m_Untranslated:
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 32900000, guid: 04d21b8885e76ec4885ffd9fc01efa6d, type: 3}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 1
m_UnmaskedViews:
- m_SelectorType: 1
m_ViewType:
m_TypeName:
m_EditorWindowType:
m_TypeName: Unity.Play.Publisher.Editor.PublisherWindow, Unity.Play.Publisher.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_AlternateEditorWindowTypes:
m_Items: []
m_MaskType: 0
m_MaskSizeModifier: 0
m_UnmaskedControls: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 0
Title:
m_Untranslated: Your game is being processed
Text:
m_Untranslated: "Your game is uploading to Unity Play. \n\nIn a few minutes,
you'll be able to share your game with your friends!"
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 1
Title:
m_Untranslated:
Text:
m_Untranslated:
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items:
- Type:
m_TypeName: Unity.Tutorials.Core.Editor.ArbitraryCriterion, Unity.Tutorials.Core.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Criterion: {fileID: -2340161092345423632}
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
m_CameraSettings:
m_CameraMode: 0
m_FocusMode: 0
m_Orthographic: 0
m_Size: 0
m_Pivot: {x: 0, y: 0, z: 0}
m_Rotation: {x: 0, y: 0, z: 0, w: 0}
m_FrameObject:
m_SceneGuid:
m_GameObjectGuid:
m_SerializedComponentType:
m_TypeName:
m_ComponentIndex: 0
m_AssetObject: {fileID: 0}
m_Prefab: {fileID: 0}
m_Enabled: 0
NextButton:
m_Untranslated: Next
DoneButton:
m_Untranslated: Done
m_CompletedSound: {fileID: 8300000, guid: 93fbb109633e844259ea828442bda0cb, type: 3}
m_AutoAdvance: 1
Showing:
m_PersistentCalls:
m_Calls: []
Shown:
m_PersistentCalls:
m_Calls: []
Staying:
m_PersistentCalls:
m_Calls: []
CriteriaValidated:
m_PersistentCalls:
m_Calls: []
MaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
NonMaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
m_OnBeforePageShown:
m_PersistentCalls:
m_Calls: []
m_OnAfterPageShown:
m_PersistentCalls:
m_Calls: []
m_OnTutorialPageStay:
m_PersistentCalls:
m_Calls: []
m_OnBeforeTutorialQuit:
m_PersistentCalls:
m_Calls: []
m_NextButton:
m_DoneButton:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9903de0d10380094eb753dcdac1f5e68
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,156 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ff771ccdf4150419d9ff4d342b069aae, type: 3}
m_Name: Walkthrough7-030
m_EditorClassIdentifier:
m_Paragraphs:
m_Items:
- m_Type: 6
Title:
m_Untranslated:
Text:
m_Untranslated:
m_Tutorial: {fileID: 0}
m_Image: {fileID: 2800000, guid: 8d0bf2defb8cb734fb0a63a9aa031ee7, type: 3}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews:
- m_SelectorType: 1
m_ViewType:
m_TypeName:
m_EditorWindowType:
m_TypeName: Unity.Connect.Share.Editor.ShareWindow, Unity.Connect.Share.Editor,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_AlternateEditorWindowTypes:
m_Items: []
m_MaskType: 0
m_MaskSizeModifier: 0
m_UnmaskedControls: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 0
Title:
m_Untranslated: Share your game
Text:
m_Untranslated: "You\u2019re almost ready to share! Before you do, add some
details for your game directly on Unity Play: a title, description, and
a thumbnail, if you like.\n\nIt\u2019s also a good idea to test one more
time, to make sure that everything works as expected.\n\n<b>Your journey
doesn't end here:</b>\n\n\u2022 When you\u2019re ready, share the link
so others can play your game!\n\n\u2022 After publishing your game, you\u2019ll
find the bonus <b>Roadster Kart</b> added to <b>My Assets</b> in the Unity
Asset Store. Go check it out!\n\n\u2022 You can <a href=\"https://learn.unity.com/project/karting-template\">try
out the Creative Mods</a> and explore other Microgames on <a href=\"https://learn.unity.com/\">Unity
Learn!</a> These links will open in your default browser window.\n\n\u2022
Learn more about Unity and continue your creator journey with <a href=\"https://learn.unity.com/pathway/unity-essentials\">Unity
Essentials!</a>"
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary: Share your game
m_Description: "You\u2019re almost ready to share! Before you do, add some
details for your game directly on Unity Play: a title, description, and a
thumbnail if you want.\n\nIt\u2019s also a good idea to test that everything
works as expected one more time.\n\n<b>Your journey doesn't end here:</b>\n\n\u2022
When you\u2019re ready, share the link so others can play your game!\n\n\u2022
You can <a href=\"https://learn.unity.com/project/lego-template\">add more
Mods to your game</a> and explore other Microgames on <a href=\"https://learn.unity.com/\">Unity
Learn!</a> These links will open in your default browser window."
m_InstructionBoxTitle:
m_InstructionText:
m_TutorialButtonText:
- m_Type: 1
Title:
m_Untranslated:
Text:
m_Untranslated: Select <b>Done</b> to return to the tutorial overview.
m_Tutorial: {fileID: 0}
m_Image: {fileID: 0}
m_Video: {fileID: 0}
m_CriteriaCompletion: 0
m_Criteria:
m_Items: []
m_MaskingSettings:
m_MaskingEnabled: 0
m_UnmaskedViews: []
m_Summary:
m_Description:
m_InstructionBoxTitle:
m_InstructionText: Select <b>Done</b> to return to the tutorial overview.
m_TutorialButtonText:
m_CameraSettings:
m_CameraMode: 0
m_FocusMode: 0
m_Orthographic: 0
m_Size: 0
m_Pivot: {x: 0, y: 0, z: 0}
m_Rotation: {x: 0, y: 0, z: 0, w: 0}
m_FrameObject:
m_SceneGuid:
m_GameObjectGuid:
m_SerializedComponentType:
m_TypeName:
m_ComponentIndex: 0
m_AssetObject: {fileID: 0}
m_Prefab: {fileID: 0}
m_Enabled: 0
NextButton:
m_Untranslated: Next
DoneButton:
m_Untranslated: Done
m_CompletedSound: {fileID: 8300000, guid: 93fbb109633e844259ea828442bda0cb, type: 3}
m_AutoAdvance: 0
Showing:
m_PersistentCalls:
m_Calls: []
Shown:
m_PersistentCalls:
m_Calls: []
Staying:
m_PersistentCalls:
m_Calls: []
CriteriaValidated:
m_PersistentCalls:
m_Calls: []
MaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
NonMaskingSettingsChanged:
m_PersistentCalls:
m_Calls: []
m_OnBeforePageShown:
m_PersistentCalls:
m_Calls: []
m_OnAfterPageShown:
m_PersistentCalls:
m_Calls: []
m_OnTutorialPageStay:
m_PersistentCalls:
m_Calls: []
m_OnBeforeTutorialQuit:
m_PersistentCalls:
m_Calls: []
m_NextButton: Next
m_DoneButton: Done

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5ae42c0e96418ec46b613bb3c92bb7b3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@ -0,0 +1,92 @@
fileFormatVersion: 2
guid: 8d0bf2defb8cb734fb0a63a9aa031ee7
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -51,7 +51,7 @@ namespace Unity.Tutorials
public void StartTutorial(Tutorial tutorial)
{
TutorialWindowUtils.StartTutorial(tutorial);
TutorialManager.Instance.StartTutorial(tutorial);
}
}
}

View File

@ -38,14 +38,6 @@ MonoBehaviour:
type: 3}
objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486,
type: 3}
dataDrivenLensFlare: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92,
type: 3}
terrainDetailLitPS: {fileID: 4800000, guid: f6783ab646d374f94b199774402a5144,
type: 3}
terrainDetailGrassPS: {fileID: 4800000, guid: e507fdfead5ca47e8b9a768b51c291a1,
type: 3}
terrainDetailGrassBillboardPS: {fileID: 4800000, guid: 29868e73b638e48ca99a19ea58c48d90,
type: 3}
m_AssetVersion: 2
m_OpaqueLayerMask:
serializedVersion: 2

View File

@ -0,0 +1,654 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &1
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_PixelRect:
serializedVersion: 2
x: 0
y: 45
width: 1666
height: 958
m_ShowMode: 4
m_Title:
m_RootView: {fileID: 6}
m_MinSize: {x: 950, y: 542}
m_MaxSize: {x: 10000, y: 10000}
--- !u!114 &2
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 466
width: 290
height: 442
m_MinSize: {x: 234, y: 271}
m_MaxSize: {x: 10004, y: 10021}
m_ActualView: {fileID: 14}
m_Panes:
- {fileID: 14}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &3
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 4}
- {fileID: 2}
m_Position:
serializedVersion: 2
x: 973
y: 0
width: 290
height: 908
m_MinSize: {x: 234, y: 492}
m_MaxSize: {x: 10004, y: 14042}
vertical: 1
controlID: 226
--- !u!114 &4
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 290
height: 466
m_MinSize: {x: 204, y: 221}
m_MaxSize: {x: 4004, y: 4021}
m_ActualView: {fileID: 17}
m_Panes:
- {fileID: 17}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &5
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 466
width: 973
height: 442
m_MinSize: {x: 202, y: 221}
m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 15}
m_Panes:
- {fileID: 15}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &6
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12008, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 7}
- {fileID: 8}
- {fileID: 9}
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 1666
height: 958
m_MinSize: {x: 950, y: 542}
m_MaxSize: {x: 10000, y: 10000}
--- !u!114 &7
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12011, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 1666
height: 30
m_MinSize: {x: 0, y: 0}
m_MaxSize: {x: 0, y: 0}
m_LastLoadedLayoutName: Tutorial
--- !u!114 &8
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 10}
- {fileID: 3}
- {fileID: 11}
m_Position:
serializedVersion: 2
x: 0
y: 30
width: 1666
height: 908
m_MinSize: {x: 713, y: 492}
m_MaxSize: {x: 18008, y: 14042}
vertical: 0
controlID: 74
--- !u!114 &9
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12042, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 938
width: 1666
height: 20
m_MinSize: {x: 0, y: 0}
m_MaxSize: {x: 0, y: 0}
--- !u!114 &10
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 12}
- {fileID: 5}
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 973
height: 908
m_MinSize: {x: 202, y: 442}
m_MaxSize: {x: 4002, y: 8042}
vertical: 1
controlID: 75
--- !u!114 &11
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 1263
y: 0
width: 403
height: 908
m_MinSize: {x: 277, y: 71}
m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 13}
m_Panes:
- {fileID: 13}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &12
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 973
height: 466
m_MinSize: {x: 202, y: 221}
m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 16}
m_Panes:
- {fileID: 16}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &13
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_AutoRepaintOnSceneChange: 0
m_MinSize: {x: 275, y: 50}
m_MaxSize: {x: 4000, y: 4000}
m_TitleContent:
m_Text: Inspector
m_Image: {fileID: -6905738622615590433, guid: 0000000000000000d000000000000000,
type: 0}
m_Tooltip:
m_DepthBufferBits: 0
m_Pos:
serializedVersion: 2
x: 2
y: 19
width: 401
height: 887
m_ScrollPosition: {x: 0, y: 0}
m_InspectorMode: 0
m_PreviewResizer:
m_CachedPref: -160
m_ControlHash: -371814159
m_PrefName: Preview_InspectorPreview
m_PreviewWindow: {fileID: 0}
--- !u!114 &14
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_AutoRepaintOnSceneChange: 0
m_MinSize: {x: 230, y: 250}
m_MaxSize: {x: 10000, y: 10000}
m_TitleContent:
m_Text: Project
m_Image: {fileID: -7501376956915960154, guid: 0000000000000000d000000000000000,
type: 0}
m_Tooltip:
m_DepthBufferBits: 0
m_Pos:
serializedVersion: 2
x: 2
y: 19
width: 286
height: 421
m_SearchFilter:
m_NameFilter:
m_ClassNames: []
m_AssetLabels: []
m_AssetBundleNames: []
m_VersionControlStates: []
m_ReferencingInstanceIDs:
m_ScenePaths: []
m_ShowAllHits: 0
m_SearchArea: 0
m_Folders:
- Assets
m_ViewMode: 0
m_StartGridSize: 64
m_LastFolders:
- Assets
m_LastFoldersGridSize: -1
m_LastProjectPath: /Users/danielbrauer/Unity Projects/New Unity Project 47
m_IsLocked: 0
m_FolderTreeState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs: ee240000
m_LastClickedID: 9454
m_ExpandedIDs: ee24000000ca9a3bffffff7f
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
m_OriginalName:
m_EditFieldRect:
serializedVersion: 2
x: 0
y: 0
width: 0
height: 0
m_UserData: 0
m_IsWaitingForDelay: 0
m_IsRenaming: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 1
m_ClientGUIView: {fileID: 0}
m_SearchString:
m_CreateAssetUtility:
m_EndAction: {fileID: 0}
m_InstanceID: 0
m_Path:
m_Icon: {fileID: 0}
m_ResourceFile:
m_AssetTreeState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs: 68fbffff
m_LastClickedID: 0
m_ExpandedIDs: ee240000
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
m_OriginalName:
m_EditFieldRect:
serializedVersion: 2
x: 0
y: 0
width: 0
height: 0
m_UserData: 0
m_IsWaitingForDelay: 0
m_IsRenaming: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 1
m_ClientGUIView: {fileID: 0}
m_SearchString:
m_CreateAssetUtility:
m_EndAction: {fileID: 0}
m_InstanceID: 0
m_Path:
m_Icon: {fileID: 0}
m_ResourceFile:
m_ListAreaState:
m_SelectedInstanceIDs: 68fbffff
m_LastClickedInstanceID: -1176
m_HadKeyboardFocusLastEvent: 0
m_ExpandedInstanceIDs: c6230000
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
m_OriginalName:
m_EditFieldRect:
serializedVersion: 2
x: 0
y: 0
width: 0
height: 0
m_UserData: 0
m_IsWaitingForDelay: 0
m_IsRenaming: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 1
m_ClientGUIView: {fileID: 0}
m_CreateAssetUtility:
m_EndAction: {fileID: 0}
m_InstanceID: 0
m_Path:
m_Icon: {fileID: 0}
m_ResourceFile:
m_NewAssetIndexInList: -1
m_ScrollPosition: {x: 0, y: 0}
m_GridSize: 64
m_DirectoriesAreaWidth: 110
--- !u!114 &15
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12015, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_AutoRepaintOnSceneChange: 1
m_MinSize: {x: 200, y: 200}
m_MaxSize: {x: 4000, y: 4000}
m_TitleContent:
m_Text: Game
m_Image: {fileID: -2087823869225018852, guid: 0000000000000000d000000000000000,
type: 0}
m_Tooltip:
m_DepthBufferBits: 32
m_Pos:
serializedVersion: 2
x: 0
y: 19
width: 971
height: 421
m_MaximizeOnPlay: 0
m_Gizmos: 0
m_Stats: 0
m_SelectedSizes: 00000000000000000000000000000000000000000000000000000000000000000000000000000000
m_TargetDisplay: 0
m_ZoomArea:
m_HRangeLocked: 0
m_VRangeLocked: 0
m_HBaseRangeMin: -242.75
m_HBaseRangeMax: 242.75
m_VBaseRangeMin: -101
m_VBaseRangeMax: 101
m_HAllowExceedBaseRangeMin: 1
m_HAllowExceedBaseRangeMax: 1
m_VAllowExceedBaseRangeMin: 1
m_VAllowExceedBaseRangeMax: 1
m_ScaleWithWindow: 0
m_HSlider: 0
m_VSlider: 0
m_IgnoreScrollWheelUntilClicked: 0
m_EnableMouseInput: 1
m_EnableSliderZoom: 0
m_UniformScale: 1
m_UpDirection: 1
m_DrawArea:
serializedVersion: 2
x: 0
y: 17
width: 971
height: 404
m_Scale: {x: 2, y: 2}
m_Translation: {x: 485.5, y: 202}
m_MarginLeft: 0
m_MarginRight: 0
m_MarginTop: 0
m_MarginBottom: 0
m_LastShownAreaInsideMargins:
serializedVersion: 2
x: -242.75
y: -101
width: 485.5
height: 202
m_MinimalGUI: 1
m_defaultScale: 2
m_TargetTexture: {fileID: 0}
m_CurrentColorSpace: 0
m_LastWindowPixelSize: {x: 1942, y: 842}
m_ClearInEditMode: 1
m_NoCameraWarning: 1
m_LowResolutionForAspectRatios: 01000000000100000100
--- !u!114 &16
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_AutoRepaintOnSceneChange: 1
m_MinSize: {x: 200, y: 200}
m_MaxSize: {x: 4000, y: 4000}
m_TitleContent:
m_Text: Scene
m_Image: {fileID: 2318424515335265636, guid: 0000000000000000d000000000000000,
type: 0}
m_Tooltip:
m_DepthBufferBits: 32
m_Pos:
serializedVersion: 2
x: 0
y: 19
width: 971
height: 445
m_SceneLighting: 1
lastFramingTime: 0
m_2DMode: 0
m_isRotationLocked: 0
m_AudioPlay: 0
m_Position:
m_Target: {x: 0, y: 0, z: 0}
speed: 2
m_Value: {x: 0, y: 0, z: 0}
m_RenderMode: 0
m_ValidateTrueMetals: 0
m_SceneViewState:
showFog: 1
showMaterialUpdate: 0
showSkybox: 1
showFlares: 1
showImageEffects: 1
grid:
xGrid:
m_Target: 0
speed: 2
m_Value: 0
yGrid:
m_Target: 1
speed: 2
m_Value: 1
zGrid:
m_Target: 0
speed: 2
m_Value: 0
m_Rotation:
m_Target: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226}
speed: 2
m_Value: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226}
m_Size:
m_Target: 10
speed: 2
m_Value: 10
m_Ortho:
m_Target: 0
speed: 2
m_Value: 0
m_LastSceneViewRotation: {x: 0, y: 0, z: 0, w: 0}
m_LastSceneViewOrtho: 0
m_ReplacementShader: {fileID: 0}
m_ReplacementString:
m_LastLockedObject: {fileID: 0}
m_ViewIsLockedToObject: 0
--- !u!114 &17
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_AutoRepaintOnSceneChange: 0
m_MinSize: {x: 200, y: 200}
m_MaxSize: {x: 4000, y: 4000}
m_TitleContent:
m_Text: Hierarchy
m_Image: {fileID: -590624980919486359, guid: 0000000000000000d000000000000000,
type: 0}
m_Tooltip:
m_DepthBufferBits: 0
m_Pos:
serializedVersion: 2
x: 2
y: 19
width: 286
height: 445
m_TreeViewState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs: 68fbffff
m_LastClickedID: -1176
m_ExpandedIDs: 7efbffff00000000
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
m_OriginalName:
m_EditFieldRect:
serializedVersion: 2
x: 0
y: 0
width: 0
height: 0
m_UserData: 0
m_IsWaitingForDelay: 0
m_IsRenaming: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 0
m_ClientGUIView: {fileID: 0}
m_SearchString:
m_ExpandedScenes:
-
m_CurrenRootInstanceID: 0
m_Locked: 0
m_CurrentSortingName: TransformSorting

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: eabc9546105bf4accac1fd62a63e88e6
timeCreated: 1487337779
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -16,18 +16,10 @@ namespace TPUModelerEditor
private static readonly Dictionary<Type, MethodInfo> methodByType;
static MeshFilterEditor()
{
IEnumerable<Type> SafeGetTypes(Assembly assembly)
{
try { return assembly.GetTypes(); }
catch (ReflectionTypeLoadException ex) { return ex.Types.Where(t => t != null); }
catch { return Array.Empty<Type>(); }
}
var query = from assembly in AppDomain.CurrentDomain.GetAssemblies()
from type in SafeGetTypes(assembly)
from type in assembly.GetTypes()
where type.Name == "MeshFilterEditor"
let methodInfo = type.GetMethod(nameof(OnMeshFilterGUI), BindingFlags.Static | BindingFlags.Public)
where methodInfo != null
let parameters = methodInfo.GetParameters()
where parameters.Length > 0 && parameters[0].ParameterType.Name == nameof(UModeler)
select new { Type = parameters[0].ParameterType, Method = methodInfo };

View File

@ -1,312 +0,0 @@
# 玩法编辑器系统 — 完整实现方案
## 系统架构
```
┌─────────────────────────────────────────────────────────────────┐
│ GameplayEditorWindow (Editor) │
│ ┌──────────────────────────┐ ┌────────────────────────────┐ │
│ │ Canvas 可视化编辑 │ │ Excel 表格映射 │ │
│ │ (FlowCanvas/NodeCanvas) │ │ (GraphDataSchema) │ │
│ └──────────┬───────────────┘ └─────────────┬──────────────┘ │
│ │ │ │
│ └──────────────┬─────────────────┘ │
│ │ │
│ GraphExcelSyncManager (Runtime) │
│ (双向同步: Graph JSON ↔ Excel 表格) │
│ │ │
│ ┌──────────────────┴──────────────────┐ │
│ │ │ │
│ ExcelDataProvider Graph.onGraphSerialized │
│ (EPPlus 读写 .xlsx) (自动触发同步) │
└─────────────────────────────────────────────────────────────────┘
```
---
## 核心模块说明
### 1. **GraphDataSchema** (`GraphDataSchema.cs`)
定义 Canvas 节点字段 ↔ Excel 列的映射关系
**使用方式:**
```
在 Unity Editor 中:
1. 右键 → Create → GameplayEditor/GraphDataSchema
2. 配置字段映射:
- fieldName: 节点中的字段名(支持嵌套如 'task.duration'
- excelColumnName: Excel 表格列名
- fieldType: 数据类型String/Int/Float/Bool/Vector3/Color
3. 指定 sheetName对应 Excel 中的 Sheet 名称)
```
**示例配置:**
```
Sheet: "技能"
字段映射:
- ID → NodeID (Int)
- name → NodeName (String)
- comment → 描述 (String)
- task.duration → 持续时间 (Float)
```
---
### 2. **ExcelDataProvider** (`ExcelDataProvider.cs`)
负责读写 .xlsx 文件的底层操作
**依赖:** EPPlus NuGet 包
```bash
# 在 Unity 项目中安装(需要配置 NuGet
Install-Package EPPlus
```
**API**
```csharp
var provider = new ExcelDataProvider("Assets/玩法编辑器.xlsx");
// 读取 Sheet
var data = provider.ReadSheet("技能");
// 写入 Sheet
provider.WriteSheet("技能", nodeDataList);
// 获取所有 Sheet 名称
var sheets = provider.GetSheetNames();
```
---
### 3. **GraphExcelSyncManager** (`GraphExcelSyncManager.cs`)
运行时双向同步管理器
**工作流程:**
**Canvas → Excel自动**
```
Graph.SelfSerialize()
↓ (触发 onGraphSerialized 事件)
GraphExcelSyncManager.OnGraphChanged()
ExtractNodeData() (遍历所有节点,按 Schema 提取字段)
ExcelDataProvider.WriteSheet() (写入 Excel)
```
**Excel → Canvas手动触发**
```
SyncExcelToGraph()
ExcelDataProvider.ReadSheet() (读取 Excel 数据)
ApplyDataToGraph() (按 NodeID 匹配节点,更新字段)
Graph 节点更新完成
```
---
### 4. **GameplayEditorWindow** (`GameplayEditorWindow.cs`)
编辑器窗口 UI
**打开方式:** `Window → Gameplay Editor`
**功能:**
- 左侧Canvas 节点列表(实时显示)
- 右侧Schema 字段映射(配置参考)
- 工具栏同步按钮Canvas ↔ Excel
---
## 使用流程
### 第一步:创建 Schema 配置
```
1. 在 Assets 中右键 → Create → GameplayEditor/GraphDataSchema
2. 命名为 "SkillGraphSchema"
3. 配置字段映射(对应你的 Graph 节点结构)
4. 保存
```
### 第二步:配置 SyncManager
```csharp
// 在某个 MonoBehaviour 中
public class GameplayController : MonoBehaviour
{
public Graph skillGraph;
public GraphDataSchema skillSchema;
private void Start()
{
var syncManager = gameObject.AddComponent<GraphExcelSyncManager>();
syncManager.targetGraph = skillGraph;
syncManager.schema = skillSchema;
}
}
```
### 第三步:编辑工作流
```
1. 在 Canvas 中编辑节点 → 自动同步到 Excel
2. 在 Excel 中修改数据 → 点击"同步 Excel → Canvas"更新
3. 支持批量编辑:在 Excel 中修改多行数据,一次性导入
```
---
## 数据流向示例
### 场景:编辑技能节点
**Canvas 中的节点结构:**
```csharp
public class SkillNode : FlowNode
{
public int skillID;
public string skillName;
public float cooldown;
public int manaCost;
}
```
**Schema 配置:**
```
Sheet: "技能"
字段映射:
- skillID → 技能ID (Int)
- skillName → 技能名称 (String)
- cooldown → 冷却时间 (Float)
- manaCost → 魔法消耗 (Int)
```
**Excel 表格:**
```
| 技能ID | 技能名称 | 冷却时间 | 魔法消耗 |
|--------|---------|---------|---------|
| 1 | 火球术 | 5.0 | 50 |
| 2 | 冰冻术 | 8.0 | 60 |
```
**同步流程:**
```
修改 Canvas 节点 → Graph.SelfSerialize()
→ onGraphSerialized 事件触发
→ ExtractNodeData() 提取 [skillID, skillName, cooldown, manaCost]
→ WriteSheet() 写入 Excel
→ Excel 自动更新
```
---
## 高级特性
### 1. 节点类型过滤
```csharp
schema.nodeTypeFilter = new List<string> { "SkillNode", "BuffNode" };
// 只同步这两种类型的节点
```
### 2. 嵌套字段支持
```csharp
// 节点中有嵌套对象
public class SkillNode : FlowNode
{
public SkillData data;
}
public class SkillData
{
public float duration;
}
// Schema 配置支持嵌套路径
fieldName = "data.duration"
```
### 3. 自定义字段类型转换
```csharp
// 在 ExcelDataProvider 中扩展
private object ConvertValue(object value, GraphDataSchema.FieldType type)
{
switch (type)
{
case GraphDataSchema.FieldType.Vector3:
// 自定义 Vector3 解析逻辑
break;
// ...
}
}
```
---
## 集成现有项目的步骤
### 1. 复制文件到项目
```
Assets/BP_Scripts/GameplayEditor/
├── GraphDataSchema.cs
├── ExcelDataProvider.cs
├── GraphExcelSyncManager.cs
└── GameplayEditorWindow.cs
```
### 2. 安装 EPPlus 依赖
```
在 Packages/manifest.json 中添加:
"com.epplus": "https://github.com/EPPlusSoftware/EPPlus.git"
```
### 3. 为现有 Graph 创建 Schema
```
对于每个 Graph 类型(技能、关卡、单位、行为树),
创建对应的 Schema 配置文件
```
### 4. 启用自动同步
```csharp
// 在 GameplayController 中
private void OnEnable()
{
Graph.onGraphSerialized += OnGraphChanged;
}
```
---
## 与参考项目的对应关系
| 参考项目文件 | 我们的实现 | 用途 |
|---|---|---|
| `行为树教程.xlsx` | `GraphDataSchema` | 定义表格结构 |
| `x效果C054.xlsm` | `ExcelDataProvider` | 读写 Excel |
| `g关卡C036.xlsm` | `GameplayEditorWindow` | 编辑界面 |
| `d单位G071.xlsm` | `GraphExcelSyncManager` | 数据同步 |
---
## 故障排查
### 问题 1Excel 文件被锁定
**原因:** 文件被其他程序打开
**解决:** 关闭 Excel重新同步
### 问题 2字段映射不生效
**原因:** fieldName 拼写错误或字段不存在
**解决:** 检查 Schema 配置中的 fieldName 是否与节点字段名完全匹配
### 问题 3数据类型转换失败
**原因:** Excel 中的数据类型与 Schema 定义不符
**解决:** 在 ExcelDataProvider 中添加类型转换逻辑
---
## 扩展方向
1. **支持多 Graph 同时编辑** → 在 GameplayEditorWindow 中添加 Tab 页
2. **版本控制** → 记录每次同步的时间戳和变更内容
3. **冲突解决** → 当 Canvas 和 Excel 同时修改时的合并策略
4. **导出配置** → 将 Graph 导出为 JSON/Protobuf 供游戏运行时使用
5. **可视化表格** → 在 Editor 中直接显示 Excel 表格,支持拖拽编辑

View File

@ -1,15 +1,28 @@
{
"dependencies": {
"com.unity.cinemachine": "2.10.3",
"com.unity.ide.rider": "3.0.31",
"com.unity.ai.navigation": "1.1.6",
"com.unity.barracuda": "3.0.0",
"com.unity.burst": "1.8.21",
"com.unity.cinemachine": "2.10.6",
"com.unity.collab-proxy": "2.11.2",
"com.unity.connect.share": "4.2.3",
"com.unity.editorcoroutines": "1.0.0",
"com.unity.ext.nunit": "1.0.6",
"com.unity.ide.rider": "3.0.36",
"com.unity.ide.visualstudio": "2.0.22",
"com.unity.ide.vscode": "1.2.5",
"com.unity.inputsystem": "1.14.2",
"com.unity.learn.iet-framework": "3.1.3",
"com.unity.mathematics": "1.2.6",
"com.unity.ml-agents": "2.0.1",
"com.unity.probuilder": "5.2.3",
"com.unity.probuilder": "5.2.4",
"com.unity.render-pipelines.core": "14.0.12",
"com.unity.render-pipelines.universal": "14.0.12",
"com.unity.textmeshpro": "3.0.9",
"com.unity.visualeffectgraph": "14.0.12",
"com.unity.test-framework": "1.1.33",
"com.unity.textmeshpro": "3.0.7",
"com.unity.timeline": "1.7.7",
"com.unity.ugui": "1.0.0",
"com.unity.visualscripting": "1.9.4",
"com.unity.modules.ai": "1.0.0",
"com.unity.modules.androidjni": "1.0.0",
"com.unity.modules.animation": "1.0.0",

View File

@ -1,8 +1,17 @@
{
"dependencies": {
"com.unity.ai.navigation": {
"version": "1.1.6",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.modules.ai": "1.0.0"
},
"url": "https://packages.unity.cn"
},
"com.unity.barracuda": {
"version": "3.0.0",
"depth": 1,
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.burst": "1.6.0",
@ -13,7 +22,7 @@
},
"com.unity.burst": {
"version": "1.8.21",
"depth": 1,
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.mathematics": "1.2.1",
@ -22,7 +31,7 @@
"url": "https://packages.unity.cn"
},
"com.unity.cinemachine": {
"version": "2.10.3",
"version": "2.10.6",
"depth": 0,
"source": "registry",
"dependencies": {
@ -30,22 +39,39 @@
},
"url": "https://packages.unity.cn"
},
"com.unity.collab-proxy": {
"version": "2.11.2",
"depth": 0,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.cn"
},
"com.unity.connect.share": {
"version": "4.2.3",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.editorcoroutines": "1.0.0",
"com.unity.settings-manager": "1.0.2"
},
"url": "https://packages.unity.cn"
},
"com.unity.editorcoroutines": {
"version": "1.0.0",
"depth": 1,
"depth": 0,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.cn"
},
"com.unity.ext.nunit": {
"version": "1.0.6",
"depth": 1,
"depth": 0,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.cn"
},
"com.unity.ide.rider": {
"version": "3.0.31",
"version": "3.0.36",
"depth": 0,
"source": "registry",
"dependencies": {
@ -69,6 +95,15 @@
"dependencies": {},
"url": "https://packages.unity.cn"
},
"com.unity.inputsystem": {
"version": "1.14.2",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.modules.uielements": "1.0.0"
},
"url": "https://packages.unity.cn"
},
"com.unity.learn.iet-framework": {
"version": "3.1.3",
"depth": 0,
@ -81,7 +116,7 @@
},
"com.unity.mathematics": {
"version": "1.2.6",
"depth": 1,
"depth": 0,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.cn"
@ -98,19 +133,19 @@
"url": "https://packages.unity.cn"
},
"com.unity.probuilder": {
"version": "5.2.3",
"version": "5.2.4",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.settings-manager": "1.0.3",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.physics": "1.0.0",
"com.unity.modules.imgui": "1.0.0"
"com.unity.settings-manager": "1.0.3"
},
"url": "https://packages.unity.cn"
},
"com.unity.render-pipelines.core": {
"version": "14.0.12",
"depth": 1,
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.ugui": "1.0.0",
@ -164,7 +199,7 @@
},
"com.unity.test-framework": {
"version": "1.1.33",
"depth": 1,
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.ext.nunit": "1.0.6",
@ -174,7 +209,7 @@
"url": "https://packages.unity.cn"
},
"com.unity.textmeshpro": {
"version": "3.0.9",
"version": "3.0.7",
"depth": 0,
"source": "registry",
"dependencies": {
@ -182,23 +217,36 @@
},
"url": "https://packages.unity.cn"
},
"com.unity.timeline": {
"version": "1.7.7",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.director": "1.0.0",
"com.unity.modules.animation": "1.0.0",
"com.unity.modules.particlesystem": "1.0.0"
},
"url": "https://packages.unity.cn"
},
"com.unity.ugui": {
"version": "1.0.0",
"depth": 1,
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.imgui": "1.0.0"
}
},
"com.unity.visualeffectgraph": {
"version": "14.0.12",
"com.unity.visualscripting": {
"version": "1.9.4",
"depth": 0,
"source": "builtin",
"source": "registry",
"dependencies": {
"com.unity.shadergraph": "14.0.12",
"com.unity.render-pipelines.core": "14.0.12"
}
"com.unity.ugui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
},
"url": "https://packages.unity.cn"
},
"com.unity.modules.ai": {
"version": "1.0.0",

View File

@ -4,12 +4,12 @@
{
"type": "UnityEngine.ProBuilder.SemVer, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "about.identifier",
"value": "{\"m_Value\":{\"m_Major\":5,\"m_Minor\":2,\"m_Patch\":3,\"m_Build\":-1,\"m_Type\":\"\",\"m_Metadata\":\"\",\"m_Date\":\"\"}}"
"value": "{\"m_Value\":{\"m_Major\":5,\"m_Minor\":2,\"m_Patch\":4,\"m_Build\":-1,\"m_Type\":\"\",\"m_Metadata\":\"\",\"m_Date\":\"\"}}"
},
{
"type": "UnityEngine.ProBuilder.SemVer, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "preferences.version",
"value": "{\"m_Value\":{\"m_Major\":5,\"m_Minor\":2,\"m_Patch\":3,\"m_Build\":-1,\"m_Type\":\"\",\"m_Metadata\":\"\",\"m_Date\":\"\"}}"
"value": "{\"m_Value\":{\"m_Major\":5,\"m_Minor\":2,\"m_Patch\":4,\"m_Build\":-1,\"m_Type\":\"\",\"m_Metadata\":\"\",\"m_Date\":\"\"}}"
},
{
"type": "UnityEngine.ProBuilder.LogLevel, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",

View File

@ -289,196 +289,7 @@ PlayerSettings:
AndroidValidateAppBundleSize: 1
AndroidAppBundleSizeToValidate: 150
m_BuildTargetIcons: []
m_BuildTargetPlatformIcons:
- m_BuildTarget: Android
m_Icons:
- m_Textures: []
m_Width: 432
m_Height: 432
m_Kind: 2
m_SubKind:
- m_Textures: []
m_Width: 324
m_Height: 324
m_Kind: 2
m_SubKind:
- m_Textures: []
m_Width: 216
m_Height: 216
m_Kind: 2
m_SubKind:
- m_Textures: []
m_Width: 162
m_Height: 162
m_Kind: 2
m_SubKind:
- m_Textures: []
m_Width: 108
m_Height: 108
m_Kind: 2
m_SubKind:
- m_Textures: []
m_Width: 81
m_Height: 81
m_Kind: 2
m_SubKind:
- m_Textures: []
m_Width: 192
m_Height: 192
m_Kind: 1
m_SubKind:
- m_Textures: []
m_Width: 144
m_Height: 144
m_Kind: 1
m_SubKind:
- m_Textures: []
m_Width: 96
m_Height: 96
m_Kind: 1
m_SubKind:
- m_Textures: []
m_Width: 72
m_Height: 72
m_Kind: 1
m_SubKind:
- m_Textures: []
m_Width: 48
m_Height: 48
m_Kind: 1
m_SubKind:
- m_Textures: []
m_Width: 36
m_Height: 36
m_Kind: 1
m_SubKind:
- m_Textures: []
m_Width: 192
m_Height: 192
m_Kind: 0
m_SubKind:
- m_Textures: []
m_Width: 144
m_Height: 144
m_Kind: 0
m_SubKind:
- m_Textures: []
m_Width: 96
m_Height: 96
m_Kind: 0
m_SubKind:
- m_Textures: []
m_Width: 72
m_Height: 72
m_Kind: 0
m_SubKind:
- m_Textures: []
m_Width: 48
m_Height: 48
m_Kind: 0
m_SubKind:
- m_Textures: []
m_Width: 36
m_Height: 36
m_Kind: 0
m_SubKind:
- m_BuildTarget: iPhone
m_Icons:
- m_Textures: []
m_Width: 180
m_Height: 180
m_Kind: 0
m_SubKind: iPhone
- m_Textures: []
m_Width: 120
m_Height: 120
m_Kind: 0
m_SubKind: iPhone
- m_Textures: []
m_Width: 167
m_Height: 167
m_Kind: 0
m_SubKind: iPad
- m_Textures: []
m_Width: 152
m_Height: 152
m_Kind: 0
m_SubKind: iPad
- m_Textures: []
m_Width: 76
m_Height: 76
m_Kind: 0
m_SubKind: iPad
- m_Textures: []
m_Width: 120
m_Height: 120
m_Kind: 3
m_SubKind: iPhone
- m_Textures: []
m_Width: 80
m_Height: 80
m_Kind: 3
m_SubKind: iPhone
- m_Textures: []
m_Width: 80
m_Height: 80
m_Kind: 3
m_SubKind: iPad
- m_Textures: []
m_Width: 40
m_Height: 40
m_Kind: 3
m_SubKind: iPad
- m_Textures: []
m_Width: 87
m_Height: 87
m_Kind: 1
m_SubKind: iPhone
- m_Textures: []
m_Width: 58
m_Height: 58
m_Kind: 1
m_SubKind: iPhone
- m_Textures: []
m_Width: 29
m_Height: 29
m_Kind: 1
m_SubKind: iPhone
- m_Textures: []
m_Width: 58
m_Height: 58
m_Kind: 1
m_SubKind: iPad
- m_Textures: []
m_Width: 29
m_Height: 29
m_Kind: 1
m_SubKind: iPad
- m_Textures: []
m_Width: 60
m_Height: 60
m_Kind: 2
m_SubKind: iPhone
- m_Textures: []
m_Width: 40
m_Height: 40
m_Kind: 2
m_SubKind: iPhone
- m_Textures: []
m_Width: 40
m_Height: 40
m_Kind: 2
m_SubKind: iPad
- m_Textures: []
m_Width: 20
m_Height: 20
m_Kind: 2
m_SubKind: iPad
- m_Textures: []
m_Width: 1024
m_Height: 1024
m_Kind: 4
m_SubKind: App Store
m_BuildTargetPlatformIcons: []
m_BuildTargetBatching:
- m_BuildTarget: WebGL
m_StaticBatching: 1

View File

@ -3,16 +3,9 @@
--- !u!937362698 &1
VFXManager:
m_ObjectHideFlags: 0
m_IndirectShader: {fileID: 7200000, guid: 84a17cfa13e40ae4082ef42714f0a81c, type: 3}
m_CopyBufferShader: {fileID: 7200000, guid: 23c51f21a3503f6428b527b01f8a2f4e, type: 3}
m_SortShader: {fileID: 7200000, guid: ea257ca3cfb12a642a5025e612af6b2a, type: 3}
m_StripUpdateShader: {fileID: 7200000, guid: 8fa6c4009fe2a4d4486c62736fc30ad8, type: 3}
m_EmptyShader: {fileID: 4800000, guid: 33a2079f6a2db4c4eb2e44b33f4ddf6b, type: 3}
m_IndirectShader: {fileID: 0}
m_CopyBufferShader: {fileID: 0}
m_SortShader: {fileID: 0}
m_RenderPipeSettingsPath:
m_FixedTimeStep: 0.016666668
m_MaxDeltaTime: 0.05
m_MaxScrubTime: 30
m_CompiledVersion: 7
m_RuntimeVersion: 35
m_RuntimeResources: {fileID: 11400000, guid: bc10b42afe3813544bffd38ae2cd893d, type: 2}
m_BatchEmptyLifetime: 300