任务:编写场景1逻辑
1.完成对话系统框架 (1.系统结构见图 (2.使用方法为对ConversationController单例使用OnCall(Staring 对话名) (3.需要自行编辑对话内容,填写AConversation组件的内容即可 果咩,我摸了五天,求职的压力实在是太大了😿😿
This commit is contained in:
parent
7db9125c45
commit
32e1fd2d93
@ -149,7 +149,7 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5352854}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 10.247532, y: 0.4, z: 0}
|
||||
m_LocalPosition: {x: -4.16, y: 0.4, z: 0}
|
||||
m_LocalScale: {x: 1.54, y: 1.54, z: 1.26}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 288199589}
|
||||
@ -247,7 +247,7 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 15582731}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -9.222778, y: 0, z: 0}
|
||||
m_LocalPosition: {x: 3.7439997, y: 0, z: 0}
|
||||
m_LocalScale: {x: 0.66, y: 0.66, z: 0.66}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 2122669497}
|
||||
@ -470,7 +470,7 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 110133614}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -10.91, y: -1.96, z: 0}
|
||||
m_LocalPosition: {x: 4.16, y: -1.96, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 760298201}
|
||||
@ -490,7 +490,8 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
inputDir: 0
|
||||
GroundCheck: {fileID: 760298201}
|
||||
groundCheck: {fileID: 0}
|
||||
weapon: {fileID: 0}
|
||||
isRight: 1
|
||||
isGround: 0
|
||||
speed: 10
|
||||
@ -708,7 +709,7 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 226789349}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -10.247532, y: -0.5015998, z: -10}
|
||||
m_LocalPosition: {x: 4.16, y: -0.5, z: -10}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
@ -1043,7 +1044,7 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 661209885}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -8.198026, y: 0, z: 0}
|
||||
m_LocalPosition: {x: 3.3279998, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 2122669497}
|
||||
@ -1206,7 +1207,7 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 781772278}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -10.91, y: -0.5, z: -10}
|
||||
m_LocalPosition: {x: 4.16, y: -0.5, z: -10}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 903864635}
|
||||
@ -1230,6 +1231,36 @@ MonoBehaviour:
|
||||
m_BoundingShape2D: {fileID: 1206926897}
|
||||
m_ConfineScreenEdges: 1
|
||||
m_Damping: 0
|
||||
--- !u!1 &900617625
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 900617626}
|
||||
m_Layer: 0
|
||||
m_Name: GameObject
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &900617626
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 900617625}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 15
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &903864634
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 3
|
||||
@ -1405,6 +1436,60 @@ BoxCollider2D:
|
||||
serializedVersion: 2
|
||||
m_Size: {x: 38.4, y: 2.4652278}
|
||||
m_EdgeRadius: 0
|
||||
--- !u!1 &1016989005
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1016989007}
|
||||
- component: {fileID: 1016989006}
|
||||
m_Layer: 0
|
||||
m_Name: "\u7B2C\u4E00\u6B21\u5BF9\u8BDD"
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &1016989006
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1016989005}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 6cb90a10e58c42d47b5142ad61ef47d8, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
contentList:
|
||||
- {fileID: 21300000, guid: a0f5e5418ee5cba4b96b8014babc7779, type: 3}
|
||||
- {fileID: 21300000, guid: c5247c64a49f62b4eac48ee3d1043ef5, type: 3}
|
||||
speakerList: 0000000001000000
|
||||
conversationName: 1
|
||||
timePerSpeak: 3
|
||||
P1Background: {fileID: 21300000, guid: af1a632119c2cae4590e3d61c88b4ad9, type: 3}
|
||||
P2Background: {fileID: 21300000, guid: 9c6f1b7fb2e78b541985e40a52b9ca6c, type: 3}
|
||||
P1Pos: {fileID: 110133615}
|
||||
P2Pos: {fileID: 1750262982}
|
||||
offset: {x: 1.5, y: 1.5}
|
||||
--- !u!4 &1016989007
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1016989005}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 14
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1103262709
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -1798,7 +1883,7 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1449312143}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -5.123766, y: 0, z: 0}
|
||||
m_LocalPosition: {x: 2.08, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 2122669497}
|
||||
@ -1870,6 +1955,49 @@ MonoBehaviour:
|
||||
Cam: {fileID: 226789352}
|
||||
moveRate: 0.5
|
||||
startPoint: 0
|
||||
--- !u!1 &1473915065
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1473915067}
|
||||
- component: {fileID: 1473915066}
|
||||
m_Layer: 0
|
||||
m_Name: "\u5BF9\u8BDD\u7BA1\u7406\u5668"
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &1473915066
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1473915065}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d9222d1d92d354f43bf3ecf3ad5f5e68, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!4 &1473915067
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1473915065}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 9.877751, y: 0.3299248, z: -9.547317}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 13
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1558198558
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -2134,7 +2262,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1750262982
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -2143,7 +2271,7 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1750262981}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 7.15, y: -3.53, z: 0}
|
||||
m_LocalPosition: {x: 15.14, y: -0.45, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
@ -2162,7 +2290,7 @@ BoxCollider2D:
|
||||
m_IsTrigger: 1
|
||||
m_UsedByEffector: 0
|
||||
m_UsedByComposite: 0
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Offset: {x: -6.33, y: -2.05}
|
||||
m_SpriteTilingProperty:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
@ -2188,6 +2316,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
neededType: 1
|
||||
hasFinishTheConversation: 0
|
||||
--- !u!212 &1750262985
|
||||
SpriteRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -2225,8 +2354,8 @@ SpriteRenderer:
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingLayerID: 126049849
|
||||
m_SortingLayer: 2
|
||||
m_SortingOrder: 0
|
||||
m_Sprite: {fileID: 21300000, guid: 3cb7c35a750699348a04840d1ae1be5e, type: 3}
|
||||
m_Color: {r: 0.8880594, g: 1, b: 0, a: 1}
|
||||
@ -2418,7 +2547,7 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1918365588}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -2.0495064, y: 0, z: 0}
|
||||
m_LocalPosition: {x: 0.83199996, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 2122669497}
|
||||
|
@ -6,21 +6,30 @@ using Sirenix.OdinInspector;
|
||||
/// <summary>
|
||||
/// 皇帝类,控制皇帝的行为,继承自可交互物体
|
||||
/// </summary>
|
||||
public class HuangDi : Interactable
|
||||
public class HuangDi : EntryTrigger
|
||||
{
|
||||
[SerializeField][EnumPaging]
|
||||
private KnotMediator.KnotType neededType = KnotMediator.KnotType.None;
|
||||
[Header("是否已经完成了对话")]
|
||||
public bool hasFinishTheConversation = false;
|
||||
|
||||
public override void OnCall()
|
||||
{
|
||||
if(KnotMediator.Instance.CheckKnotType(neededType))
|
||||
{
|
||||
Debug.Log("皇帝接受了绳结");
|
||||
if(hasFinishTheConversation){
|
||||
if(KnotMediator.Instance.CheckKnotType(neededType))
|
||||
{
|
||||
Debug.Log("皇帝接受了绳结");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("皇帝拒绝了绳结");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("皇帝拒绝了绳结");
|
||||
ConversationController.Instance.OnCall("1");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void setNeededType(KnotMediator.KnotType type)
|
||||
|
8
Assets/Scripts/勍/对话框架.meta
Normal file
8
Assets/Scripts/勍/对话框架.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2363862f5e448ad47848b458dad32794
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
187
Assets/Scripts/勍/对话框架/AConversation.cs
Normal file
187
Assets/Scripts/勍/对话框架/AConversation.cs
Normal file
@ -0,0 +1,187 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using DG.Tweening;
|
||||
using Sirenix.OdinInspector;
|
||||
|
||||
/// <summary>
|
||||
/// 一次对话,只需在面板设置对话顺序和内容列表,再拖入对话者即可,其他一些暴露参数可不调
|
||||
/// </summary>
|
||||
public class AConversation : MonoBehaviour
|
||||
{
|
||||
|
||||
[ListDrawerSettings]
|
||||
public List<Sprite> contentList;
|
||||
[ListDrawerSettings]
|
||||
public List<ASpeak.Speaker> speakerList;
|
||||
public string conversationName;
|
||||
public float timePerSpeak;
|
||||
public Sprite P1Background;
|
||||
public Sprite P2Background;
|
||||
[Header("P1一定是左边的,切记")]
|
||||
public Transform P1Pos;
|
||||
public Transform P2Pos;
|
||||
[Header("对话框到说话者中心的偏移量")]
|
||||
public Vector2 offset = new Vector2(1.5f, 1.5f);
|
||||
|
||||
|
||||
|
||||
private List<ASpeak> speakList;
|
||||
protected ASpeak.Speaker P1;
|
||||
protected ASpeak.Speaker P2;
|
||||
protected SpriteRenderer P1Renderer;
|
||||
protected SpriteRenderer P2Renderer;
|
||||
protected Player player;
|
||||
protected SpriteRenderer P1ContentRenderer;
|
||||
protected SpriteRenderer P2ContentRenderer;
|
||||
|
||||
void Start()
|
||||
{
|
||||
speakList = new List<ASpeak>();
|
||||
//新增对话框游戏物体,挂在这个游戏物体上
|
||||
AddDialog();
|
||||
//找到玩家
|
||||
player = FindObjectOfType<Player>();
|
||||
SetConversation();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 对外界唯一接口
|
||||
/// </summary>
|
||||
public void OnCall()
|
||||
{
|
||||
|
||||
if(speakList.Count == speakerList.Count)
|
||||
{
|
||||
//移动对话框到相应位置
|
||||
MoveDialog();
|
||||
//开始对话
|
||||
StartCoroutine(Speak());
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("对话顺序和内容列表长度不一致");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected IEnumerator Speak(){
|
||||
yield return new WaitForEndOfFrame();
|
||||
//遍历对话列表
|
||||
foreach(ASpeak speak in speakList){
|
||||
//根据说话者将对话的透明度插值至1
|
||||
if(speak.speaker == P1){
|
||||
P1Renderer.DOColor(new Color(1,1,1,1),1f);
|
||||
P1ContentRenderer.sprite = speak.content;
|
||||
P1ContentRenderer.DOColor(new Color(1,1,1,1),1f);
|
||||
}
|
||||
else{
|
||||
P2Renderer.DOColor(new Color(1,1,1,1),1f);
|
||||
P2ContentRenderer.sprite = speak.content;
|
||||
P2ContentRenderer.DOColor(new Color(1,1,1,1),1f);
|
||||
}
|
||||
//等待
|
||||
yield return new WaitForSeconds(timePerSpeak);
|
||||
//根据说话者将对话的透明度插值至0
|
||||
if(speak.speaker == P1){
|
||||
P1Renderer.DOColor(new Color(1,1,1,0),1f);
|
||||
P1ContentRenderer.DOColor(new Color(1,1,1,0),1f);
|
||||
}
|
||||
else{
|
||||
P2Renderer.DOColor(new Color(1,1,1,0),1f);
|
||||
P2ContentRenderer.DOColor(new Color(1,1,1,0),1f);
|
||||
}
|
||||
yield return new WaitForSeconds(1f);
|
||||
}
|
||||
//都说完以后,触发结束事件
|
||||
OnEnd();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 在设置对话顺序时使用
|
||||
/// </summary>
|
||||
/// <param name="speaker"></param>
|
||||
protected void AddASpeak(ASpeak.Speaker speaker,Sprite content)
|
||||
{
|
||||
ASpeak speak = new ASpeak();
|
||||
speak.speaker = speaker;
|
||||
speak.content = content;
|
||||
speakList.Add(speak);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 只需要手动设置说话的顺序,不需要手动设置对话内容
|
||||
/// </summary>
|
||||
public virtual void SetConversation()
|
||||
{
|
||||
for(int i = 0; i < speakerList.Count; i++)
|
||||
{
|
||||
AddASpeak(speakerList[i], contentList[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 对话结束时触发,已有内容,会恢复玩家的操作权限
|
||||
/// </summary>
|
||||
public virtual void OnEnd()
|
||||
{
|
||||
player.ToMap("Normal");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 初始化对话框
|
||||
/// </summary>
|
||||
protected void AddDialog()
|
||||
{
|
||||
//新增对话框游戏物体,挂在这个游戏物体上
|
||||
GameObject P1dialog = new GameObject("P1Dialog");
|
||||
P1dialog.transform.SetParent(transform);
|
||||
P1dialog.transform.position = new Vector3(0, 0, 0);
|
||||
P1dialog.AddComponent<SpriteRenderer>();
|
||||
P1Renderer = P1dialog.GetComponent<SpriteRenderer>();
|
||||
P1Renderer.sprite = P1Background;
|
||||
P1Renderer.sortingLayerName = "UI";
|
||||
GameObject P2dialog = new GameObject("P2Dialog");
|
||||
P2dialog.transform.SetParent(transform);
|
||||
P2dialog.transform.position = new Vector3(0, 0, 0);
|
||||
P2dialog.AddComponent<SpriteRenderer>();
|
||||
P2Renderer = P2dialog.GetComponent<SpriteRenderer>();
|
||||
P2Renderer.sprite = P2Background;
|
||||
P2Renderer.sortingLayerName = "UI";
|
||||
|
||||
//使其二透明度变为0
|
||||
P1Renderer.color = new Color(1, 1, 1, 0);
|
||||
P2Renderer.color = new Color(1, 1, 1, 0);
|
||||
|
||||
//新增对话框内容游戏物体,挂在对话框游戏物体上
|
||||
GameObject P1Content = new GameObject("P1Content");
|
||||
P1Content.transform.SetParent(P1dialog.transform);
|
||||
P1Content.transform.localPosition = new Vector3(0, 0, 0);
|
||||
P1Content.AddComponent<SpriteRenderer>();
|
||||
P1ContentRenderer = P1Content.GetComponent<SpriteRenderer>();
|
||||
P1ContentRenderer.sortingLayerName = "UI";
|
||||
P1ContentRenderer.sortingOrder = 2;
|
||||
|
||||
GameObject P2Content = new GameObject("P2Content");
|
||||
P2Content.transform.SetParent(P2dialog.transform);
|
||||
P2Content.transform.localPosition = new Vector3(0, 0, 0);
|
||||
P2Content.AddComponent<SpriteRenderer>();
|
||||
P2ContentRenderer = P2Content.GetComponent<SpriteRenderer>();
|
||||
P2ContentRenderer.sortingLayerName = "UI";
|
||||
P2ContentRenderer.sortingOrder = 2;
|
||||
|
||||
//使其二透明度变为0
|
||||
P1ContentRenderer.color = new Color(1, 1, 1, 0);
|
||||
P2ContentRenderer.color = new Color(1, 1, 1, 0);
|
||||
}
|
||||
|
||||
protected void MoveDialog()
|
||||
{
|
||||
P1Renderer.transform.position = P1Pos.position + new Vector3(offset.x, offset.y, 0);
|
||||
P2Renderer.transform.position = P2Pos.position + new Vector3(offset.x * - 1, offset.y, 0);
|
||||
}
|
||||
|
||||
}
|
11
Assets/Scripts/勍/对话框架/AConversation.cs.meta
Normal file
11
Assets/Scripts/勍/对话框架/AConversation.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6cb90a10e58c42d47b5142ad61ef47d8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
19
Assets/Scripts/勍/对话框架/ASpeak.cs
Normal file
19
Assets/Scripts/勍/对话框架/ASpeak.cs
Normal file
@ -0,0 +1,19 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Sirenix.OdinInspector;
|
||||
|
||||
/// <summary>
|
||||
/// 代表一句对话,包含内容的Sprite和enum的对话者
|
||||
/// </summary>
|
||||
/// <typeparam name="T">此次对话的Spaker的枚举类型</typeparam>
|
||||
public class ASpeak
|
||||
{
|
||||
public enum Speaker
|
||||
{
|
||||
P1,
|
||||
P2
|
||||
}
|
||||
public Sprite content;
|
||||
public Speaker speaker;
|
||||
}
|
11
Assets/Scripts/勍/对话框架/ASpeak.cs.meta
Normal file
11
Assets/Scripts/勍/对话框架/ASpeak.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 02035d4c700710b4e9160c4e67fece58
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
30
Assets/Scripts/勍/对话框架/ConversationController.cs
Normal file
30
Assets/Scripts/勍/对话框架/ConversationController.cs
Normal file
@ -0,0 +1,30 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class ConversationController : UnitySingleton<ConversationController>
|
||||
{
|
||||
private AConversation[] conversationList;
|
||||
|
||||
void Start()
|
||||
{
|
||||
conversationList = FindObjectsOfType<AConversation>();
|
||||
}
|
||||
|
||||
public void OnCall(string name)
|
||||
{
|
||||
//找到叫name的对话,并调用其OnCall()
|
||||
foreach (AConversation conversation in conversationList)
|
||||
{
|
||||
if (conversation.conversationName == name)
|
||||
{
|
||||
conversation.OnCall();
|
||||
//改变玩家地图至Null
|
||||
FindObjectOfType<Player>().ToMap("Null");
|
||||
return;
|
||||
}
|
||||
}
|
||||
//如果没找到,则报错
|
||||
Debug.LogError("没有找到名为" + name + "的对话");
|
||||
}
|
||||
}
|
11
Assets/Scripts/勍/对话框架/ConversationController.cs.meta
Normal file
11
Assets/Scripts/勍/对话框架/ConversationController.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d9222d1d92d354f43bf3ecf3ad5f5e68
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/美术素材/杂项/测试用对话框.png
Normal file
BIN
Assets/美术素材/杂项/测试用对话框.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 71 KiB |
144
Assets/美术素材/杂项/测试用对话框.png.meta
Normal file
144
Assets/美术素材/杂项/测试用对话框.png.meta
Normal file
@ -0,0 +1,144 @@
|
||||
fileFormatVersion: 2
|
||||
guid: af1a632119c2cae4590e3d61c88b4ad9
|
||||
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
|
||||
vTOnly: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
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: 200
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 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
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: iPhone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Windows Store Apps
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
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:
|
BIN
Assets/美术素材/杂项/测试用对话框P2.png
Normal file
BIN
Assets/美术素材/杂项/测试用对话框P2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 71 KiB |
144
Assets/美术素材/杂项/测试用对话框P2.png.meta
Normal file
144
Assets/美术素材/杂项/测试用对话框P2.png.meta
Normal file
@ -0,0 +1,144 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9c6f1b7fb2e78b541985e40a52b9ca6c
|
||||
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
|
||||
vTOnly: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
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: 200
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 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
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: iPhone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Windows Store Apps
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
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:
|
Loading…
x
Reference in New Issue
Block a user