游戏蛮牛学习群(纯技术交流,不闲聊):959392658
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

首页   >   博客   >   18803836360

mvc代码简单应用大黄 热度 1

个人分类: 模式简单 | 2018-7-10 14:33
0 个评论 | 阅读 159 | 收藏 | 举报

场景:一个按钮,view在cancave上面挂,按钮拖拽获取view中的方法,

view:发送信息给控制器,以及模型数据的展示

[code]csharpcode:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class View : MonoBehaviour {
	void Start ()
	{
	}
	public void SaveFile()
	{
		Controller.Instance.SendMsg("Save", "haha", "44");
	}
}

数据类 :对数据的封装                中介:创建文件,插入数据-》间接(隐式)的将方法与委托绑定

[code]csharpcode:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Xml;
public class User {
	public string name;
	public string score;
}
public class Mediator {
	private static Mediator INSTANCE;
	string path = Application.dataPath + "/Doc.txt";
	public static Mediator Instance
	{
		get
		{
			if (INSTANCE == null)
			{
				INSTANCE = new Mediator();
			}
			return INSTANCE;
		}
	}
	public void MediatorInit()
	{
		ReadFile();//保证文件夹的存在
		//将字符串和方法绑定
		Controller.Instance.RegisterAction("Save", saveFile);//名字+方法
	}
	void saveFile(string[] str)
	{
		User user = new User();
		user.name = str[0];
		user.score = str[1];
		XmlDocument doc = new XmlDocument();
		doc.Load(path);
		XmlElement childNode = doc.CreateElement("UserInfo");
		XmlElement nameNode = doc.CreateElement("Name");
		nameNode.InnerText = user.name;
		XmlElement scoreNode = doc.CreateElement("Score");
		scoreNode.InnerText = user.score;
		childNode.AppendChild(nameNode);
		childNode.AppendChild(scoreNode);
		doc.SelectSingleNode("User").AppendChild(childNode);
		doc.Save(path);
	}
	void ReadFile()
	{
		XmlDocument doc = new XmlDocument();
		if (!File.Exists(path))
		{
			File.Create(path);
		}
		doc.Load(path);
		//doc.AppendChild(doc.CreateXmlDeclaration("1.0", "utf-8", null));
		//XmlElement root = doc.CreateElement("UserInfo");
		//doc.AppendChild(root);
		//doc.Save(path);
	}
}

控制器:将方法与委托绑定存入字典:并执行字典中已经存在的委托

[code]csharpcode:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class Controller
{
	private static Controller INSTANCE;
	public static Controller Instance
	{
		get
		{
			if (INSTANCE==null)
			{
				INSTANCE = new Controller();
			}
			return INSTANCE;
		}
	}
	public delegate void Mydel(params string[] str);
	public Dictionary<string, Mydel> ActionList = new Dictionary<string, Mydel>();
	void ControllerInit()
	{

	}
	public void RegisterAction(string _name, Mydel _myDel)
	{
		ActionList.Add(_name, _myDel);
	}
	public void SendMsg(string _name,params string[] str)
	{
		if (ActionList.ContainsKey(_name))
		{
			ActionList[_name](str);//前边是委托  后边是参数
		}
	}
}

信息的存储文本

[code]csharpcode:

<?xml version="1.0" encoding="utf-8"?>
<User>
  <UserInfo>
    <Name>haha</Name>
    <Score>44</Score>
  </UserInfo>
  <UserInfo>
    <Name>haha</Name>
    <Score>44</Score>
  </UserInfo>
</User>

测试脚本:先将委托与方法绑定,并添加进入字典

[code]csharpcode:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour {
	void Awake()
	{
		Mediator.Instance.MediatorInit();
	}
	void Start () {
		
	}
	void Update () {
		
	}
}

1 0

作者的其他最新博客

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册帐号

个人分类

标签

阅读排行

评论排行

推荐博客

最新博客

返回顶部