{{- $proxy := .}}{{$sheetProxy := $proxy.SheetProxy -}}{{- $ctx := $sheetProxy.ProtoCtx -}}
{{- $clsName := $proxy.ClassName}}{{$fields := $proxy.GetFields -}}
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was auto-generated by ExcelExporter
//     version 2.0
//     from https://github.com/xuzhuoxi/ExcelExporter 
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using System;
using UnityEngine;

namespace {{$proxy.Namespace}}
{
    public class {{$proxy.ClassName}}
    {
        /// <summary>
        /// ProtoId
        /// </summary>
        public const {{$proxy.ProtoIdDataType}} ProtoId = {{$proxy.ProtoId}};

        {{- range $index, $value := $fields}}
        /// <summary>
        /// {{$value.Remark}}
        /// </summary>
        private {{$value.LangType}} m_{{ToUpperCamelCase $value.Name}};
		{{- end}}

		// Get方法 --------------

        {{- range $index, $value := $fields}}
        /// <summary>
        /// {{$value.Remark}}
        /// </summary>
        /// <returns>{{$value.LangType}}</returns>
        public {{$value.LangType}} {{ToUpperCamelCase $value.Name}} => m_{{ToUpperCamelCase $value.Name}};
		{{- end}}

		// 以下为解释数据方法 --------------

        // 二进制数据解释
		public void FromJsonOverride(string data)
		{
            JsonUtility.FromJsonOverwrite(data, this);
		}

        // 二进制数据解释
		public void FromBinaryOverride(BinaryReaderProxy proxy)
		{
		    // 以下为从 二进制数据代理 中解释出字段数据
            {{- range $index, $value := $proxy.GetFields}}
            {{- if $value.IsCustomType}}
            this.m_{{ToUpperCamelCase $value.Name}} = {{$value.LangType}}.FromBinary(proxy);
            {{- else}}{{$define := $value.LangTypeDefine}}
            this.m_{{ToUpperCamelCase $value.Name}} = proxy.{{$define.GetGetOperate "bin"}}();
            {{- end}}
            {{- end}}
		}

        // 以下为静态实例化 --------------

        public static {{$clsName}} FromJson(string data)
        {
            return JsonUtility.FromJson<{{$clsName}}>(data);
        }

        public static {{$clsName}} FromBinary(BinaryReaderProxy proxy)
        {
            var rs = new {{$clsName}}();
            rs.FromBinaryOverride(proxy);
            return rs;
        }
    }
}