chap8_1.cs ->
public interface ILogger{
void WriteLog(string log);
}
class ConsoleLogger:ILogger{
public void WriteLog(string log){
Debug.Log(string.Format("{0}, {1}", DateTime.Now.ToLocalTime(), log));
}
}
class FileLogger : ILogger{
StreamWriter writer;
public FileLogger(string path){
writer = File.CreateText(path);
writer.AutoFlush = true;
}
public void WriteLog(string message){
writer.WriteLine("{0}, {1}", DateTime.Now.ToShortTimeString(), message);
}
}
public class CH8_1 : MonoBehaviour {
ILogger[] loggers = new ILogger[2];
// Use this for initialization
void Start () {
ConsoleLogger console = new ConsoleLogger();
FileLogger fileLogger = new FileLogger(Application.dataPath + "/log.txt");
loggers[0] = console;
loggers[1] = fileLogger;
AddLog("GameStart");
AddLog("User 320 Enter");
AddLog("Enter Room 1");
AddLog("Leave Room 1");
}
void AddLog(string message){
for(int i = 0; i < loggers.Length; i++){
loggers[i].WriteLog(message);
}
}
// Update is called once per frame
void Update () {
AddLog(Time.time.ToString());
}
}
ClimateMonitor.cs->
using UnityEngine;
using System.Collections;
using System;
using System.IO;
public class ClimateMonitor : MonoBehaviour {
private ILogger logger;
public int temperature = 0;
public void SetLogger(ILogger logger){
this.logger = logger;
}
// Use this for initialization
void Start () {
SetLogger(new ConsoleLogger());
}
// Update is called once per frame
void Update () {
int t = (int)(Time.time) % 100;
if(t != temperature){
SetTemperature(t);
}
}
void SetTemperature(int t){
temperature = t;
logger.WriteLog(" temperature is " + t);
}
}